{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7238ae8d-73dc-474b-9d36-92647cdc6030",
    "_execution_state": "idle",
    "_uuid": "691c624259cf2737f7e29c2fdbbc7f255e842eb2"
   },
   "source": [
    "#Stacked Regressions to predict House Prices \n",
    "\n",
    "\n",
    "##Serigne\n",
    "\n",
    "**July 2017**\n",
    "\n",
    "**If you use parts of this notebook in your scripts/notebooks, giving  some kind of credit would be very much appreciated :)  You can for instance link back to this notebook. Thanks!**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "735c5797-4457-4e16-b21f-7f0982f2f016",
    "_execution_state": "idle",
    "_uuid": "35143ae31bde76e140a55855b89e0d42b56160a3"
   },
   "source": [
    "This competition is very important to me as  it helped me to begin my journey on Kaggle few months ago. I've read  some great notebooks here. To name a few:\n",
    "\n",
    "1. [Comprehensive data exploration with Python][1] by **Pedro Marcelino**  : Great and very motivational data analysis\n",
    "\n",
    "2. [A study on Regression applied to the Ames dataset][2] by **Julien Cohen-Solal**  : Thorough features engeneering and deep dive into linear regression analysis  but really easy to follow for beginners.\n",
    "\n",
    "3. [Regularized Linear Models][3] by **Alexandru Papiu**  : Great Starter kernel on modelling and Cross-validation\n",
    "\n",
    "I can't recommend enough every beginner to go carefully through these kernels (and of course through many others great kernels) and get their first insights in data science and kaggle competitions.\n",
    "\n",
    "After that (and some basic pratices) you should be more confident to go through [this great script][7] by **Human Analog**  who did an impressive work on features engeneering. \n",
    "\n",
    "As the dataset is particularly handy, I  decided few days ago to get back in this competition and apply things I learnt so far, especially stacking models. For that purpose, we build two stacking classes  ( the simplest approach and a less simple one). \n",
    "\n",
    "As these classes are written for general purpose, you can easily adapt them and/or extend them for your regression problems. \n",
    "The overall approach is  hopefully concise and easy to follow.. \n",
    "\n",
    "The features engeneering is rather parsimonious (at least compared to some others great scripts) . It is pretty much :\n",
    "\n",
    "- **Imputing missing values**  by proceeding sequentially through the data\n",
    "\n",
    "- **Transforming** some numerical variables that seem really categorical\n",
    "\n",
    "- **Label Encoding** some categorical variables that may contain information in their ordering set\n",
    "\n",
    "-  [**Box Cox Transformation**][4] of skewed features (instead of log-transformation) : This gave me a **slightly better result** both on leaderboard and cross-validation.\n",
    "\n",
    "- **Getting dummy variables** for categorical features. \n",
    "\n",
    "Then we choose many base models (mostly sklearn based models + sklearn API of  DMLC's [XGBoost][5] and Microsoft's [LightGBM][6]), cross-validate them on the data before stacking/ensembling them. The key here is to make the (linear) models robust to outliers. This improved the result both on LB and cross-validation. \n",
    "\n",
    "  [1]: https://www.kaggle.com/pmarcelino/comprehensive-data-exploration-with-python\n",
    "  [2]:https://www.kaggle.com/juliencs/a-study-on-regression-applied-to-the-ames-dataset\n",
    "  [3]: https://www.kaggle.com/apapiu/regularized-linear-models\n",
    "  [4]: http://onlinestatbook.com/2/transformations/box-cox.html\n",
    "  [5]: https://github.com/dmlc/xgboost\n",
    " [6]: https://github.com/Microsoft/LightGBM\n",
    " [7]: https://www.kaggle.com/humananalog/xgboost-lasso\n",
    "\n",
    "To my surprise, this does well on LB ( 0.11420 and top 4% the last time I tested it : **July 2, 2017** )\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "d006e9e6-e191-4918-b8c1-5730f1d08e77",
    "_uuid": "ae5d947988d70f9ccbea3345f396c8394e7b1e4b"
   },
   "source": [
    "**Hope that at the end of this notebook, stacking will be clear for those, like myself, who found the concept not so easy to grasp**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "2dbccbd6-138b-4f1b-9b23-fd60c7525c14",
    "_execution_state": "idle",
    "_uuid": "c9b1d5dff21d39260eb47af6fe7aac4bd03be233"
   },
   "outputs": [],
   "source": [
    "#import some necessary librairies\n",
    "\n",
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt  # Matlab-style plotting\n",
    "import seaborn as sns\n",
    "color = sns.color_palette()\n",
    "sns.set_style('darkgrid')\n",
    "import warnings\n",
    "def ignore_warn(*args, **kwargs):\n",
    "    pass\n",
    "warnings.warn = ignore_warn #ignore annoying warning (from sklearn and seaborn)\n",
    "\n",
    "\n",
    "from scipy import stats\n",
    "from scipy.stats import norm, skew #for some statistics\n",
    "\n",
    "\n",
    "pd.set_option('display.float_format', lambda x: '{:.3f}'.format(x)) #Limiting floats output to 3 decimal points\n",
    "\n",
    "\n",
    "from subprocess import check_output\n",
    "# print(check_output([\"ls\", \"../input\"]).decode(\"utf8\")) #check the files available in the directory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "_cell_guid": "59617b4b-d797-44ce-9142-05fbfd36aada",
    "_execution_state": "idle",
    "_uuid": "0e694d13459e3e200f6e2c6333c887cbad779ba9"
   },
   "outputs": [],
   "source": [
    "#Now let's import and put the train and test datasets in  pandas dataframe\n",
    "\n",
    "train = pd.read_csv('train.csv')\n",
    "test = pd.read_csv('test.csv')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "_cell_guid": "3678529f-9d76-4853-88c5-4b2d230a85b6",
    "_execution_state": "idle",
    "_uuid": "3a32f51460a02fbe7a9122db55a740eb378dda97"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>MSSubClass</th>\n",
       "      <th>MSZoning</th>\n",
       "      <th>LotFrontage</th>\n",
       "      <th>LotArea</th>\n",
       "      <th>Street</th>\n",
       "      <th>Alley</th>\n",
       "      <th>LotShape</th>\n",
       "      <th>LandContour</th>\n",
       "      <th>Utilities</th>\n",
       "      <th>...</th>\n",
       "      <th>PoolArea</th>\n",
       "      <th>PoolQC</th>\n",
       "      <th>Fence</th>\n",
       "      <th>MiscFeature</th>\n",
       "      <th>MiscVal</th>\n",
       "      <th>MoSold</th>\n",
       "      <th>YrSold</th>\n",
       "      <th>SaleType</th>\n",
       "      <th>SaleCondition</th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>65.000</td>\n",
       "      <td>8450</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2008</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>208500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>20</td>\n",
       "      <td>RL</td>\n",
       "      <td>80.000</td>\n",
       "      <td>9600</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>2007</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>181500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>68.000</td>\n",
       "      <td>11250</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>2008</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>223500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>70</td>\n",
       "      <td>RL</td>\n",
       "      <td>60.000</td>\n",
       "      <td>9550</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2006</td>\n",
       "      <td>WD</td>\n",
       "      <td>Abnorml</td>\n",
       "      <td>140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>84.000</td>\n",
       "      <td>14260</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "      <td>2008</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "      <td>250000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 81 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Id  MSSubClass MSZoning  LotFrontage  LotArea Street Alley LotShape  \\\n",
       "0   1          60       RL       65.000     8450   Pave   NaN      Reg   \n",
       "1   2          20       RL       80.000     9600   Pave   NaN      Reg   \n",
       "2   3          60       RL       68.000    11250   Pave   NaN      IR1   \n",
       "3   4          70       RL       60.000     9550   Pave   NaN      IR1   \n",
       "4   5          60       RL       84.000    14260   Pave   NaN      IR1   \n",
       "\n",
       "  LandContour Utilities    ...     PoolArea PoolQC Fence MiscFeature MiscVal  \\\n",
       "0         Lvl    AllPub    ...            0    NaN   NaN         NaN       0   \n",
       "1         Lvl    AllPub    ...            0    NaN   NaN         NaN       0   \n",
       "2         Lvl    AllPub    ...            0    NaN   NaN         NaN       0   \n",
       "3         Lvl    AllPub    ...            0    NaN   NaN         NaN       0   \n",
       "4         Lvl    AllPub    ...            0    NaN   NaN         NaN       0   \n",
       "\n",
       "  MoSold YrSold  SaleType  SaleCondition  SalePrice  \n",
       "0      2   2008        WD         Normal     208500  \n",
       "1      5   2007        WD         Normal     181500  \n",
       "2      9   2008        WD         Normal     223500  \n",
       "3      2   2006        WD        Abnorml     140000  \n",
       "4     12   2008        WD         Normal     250000  \n",
       "\n",
       "[5 rows x 81 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##display the first five rows of the train dataset.\n",
    "train.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "_cell_guid": "ff37c1ba-8679-49e0-b3c8-9c53d01b1b04",
    "_execution_state": "idle",
    "_uuid": "816b1463b3dd0daf44949a1fa15ebfbc0e2f1235"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>MSSubClass</th>\n",
       "      <th>MSZoning</th>\n",
       "      <th>LotFrontage</th>\n",
       "      <th>LotArea</th>\n",
       "      <th>Street</th>\n",
       "      <th>Alley</th>\n",
       "      <th>LotShape</th>\n",
       "      <th>LandContour</th>\n",
       "      <th>Utilities</th>\n",
       "      <th>...</th>\n",
       "      <th>ScreenPorch</th>\n",
       "      <th>PoolArea</th>\n",
       "      <th>PoolQC</th>\n",
       "      <th>Fence</th>\n",
       "      <th>MiscFeature</th>\n",
       "      <th>MiscVal</th>\n",
       "      <th>MoSold</th>\n",
       "      <th>YrSold</th>\n",
       "      <th>SaleType</th>\n",
       "      <th>SaleCondition</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1461</td>\n",
       "      <td>20</td>\n",
       "      <td>RH</td>\n",
       "      <td>80.000</td>\n",
       "      <td>11622</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Reg</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>120</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>MnPrv</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1462</td>\n",
       "      <td>20</td>\n",
       "      <td>RL</td>\n",
       "      <td>81.000</td>\n",
       "      <td>14267</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Gar2</td>\n",
       "      <td>12500</td>\n",
       "      <td>6</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1463</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>74.000</td>\n",
       "      <td>13830</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>MnPrv</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1464</td>\n",
       "      <td>60</td>\n",
       "      <td>RL</td>\n",
       "      <td>78.000</td>\n",
       "      <td>9978</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>Lvl</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1465</td>\n",
       "      <td>120</td>\n",
       "      <td>RL</td>\n",
       "      <td>43.000</td>\n",
       "      <td>5005</td>\n",
       "      <td>Pave</td>\n",
       "      <td>NaN</td>\n",
       "      <td>IR1</td>\n",
       "      <td>HLS</td>\n",
       "      <td>AllPub</td>\n",
       "      <td>...</td>\n",
       "      <td>144</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2010</td>\n",
       "      <td>WD</td>\n",
       "      <td>Normal</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 80 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Id  MSSubClass MSZoning  LotFrontage  LotArea Street Alley LotShape  \\\n",
       "0  1461          20       RH       80.000    11622   Pave   NaN      Reg   \n",
       "1  1462          20       RL       81.000    14267   Pave   NaN      IR1   \n",
       "2  1463          60       RL       74.000    13830   Pave   NaN      IR1   \n",
       "3  1464          60       RL       78.000     9978   Pave   NaN      IR1   \n",
       "4  1465         120       RL       43.000     5005   Pave   NaN      IR1   \n",
       "\n",
       "  LandContour Utilities      ...       ScreenPorch PoolArea PoolQC  Fence  \\\n",
       "0         Lvl    AllPub      ...               120        0    NaN  MnPrv   \n",
       "1         Lvl    AllPub      ...                 0        0    NaN    NaN   \n",
       "2         Lvl    AllPub      ...                 0        0    NaN  MnPrv   \n",
       "3         Lvl    AllPub      ...                 0        0    NaN    NaN   \n",
       "4         HLS    AllPub      ...               144        0    NaN    NaN   \n",
       "\n",
       "  MiscFeature MiscVal MoSold  YrSold  SaleType  SaleCondition  \n",
       "0         NaN       0      6    2010        WD         Normal  \n",
       "1        Gar2   12500      6    2010        WD         Normal  \n",
       "2         NaN       0      3    2010        WD         Normal  \n",
       "3         NaN       0      6    2010        WD         Normal  \n",
       "4         NaN       0      1    2010        WD         Normal  \n",
       "\n",
       "[5 rows x 80 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##display the first five rows of the test dataset.\n",
    "test.head(5)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "_cell_guid": "b24451a1-fb8c-4094-ad0b-0940469d07fc",
    "_execution_state": "idle",
    "_uuid": "687813c270cbfdedccc7a9e4ec9fbb78a99d54ed"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The train data size before dropping Id feature is : (1460, 81) \n",
      "The test data size before dropping Id feature is : (1459, 80) \n",
      "\n",
      "The train data size after dropping Id feature is : (1460, 80) \n",
      "The test data size after dropping Id feature is : (1459, 79) \n"
     ]
    }
   ],
   "source": [
    "#check the numbers of samples and features\n",
    "print(\"The train data size before dropping Id feature is : {} \".format(train.shape))\n",
    "print(\"The test data size before dropping Id feature is : {} \".format(test.shape))\n",
    "\n",
    "#Save the 'Id' column\n",
    "train_ID = train['Id']\n",
    "test_ID = test['Id']\n",
    "\n",
    "#Now drop the  'Id' colum since it's unnecessary for  the prediction process.\n",
    "train.drop(\"Id\", axis = 1, inplace = True)\n",
    "test.drop(\"Id\", axis = 1, inplace = True)\n",
    "\n",
    "#check again the data size after dropping the 'Id' variable\n",
    "print(\"\\nThe train data size after dropping Id feature is : {} \".format(train.shape)) \n",
    "print(\"The test data size after dropping Id feature is : {} \".format(test.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7d5829c4-b2f1-4ef3-8b02-11f02eb7aabf",
    "_execution_state": "idle",
    "_uuid": "228cb602f1c7a47d3c5250514cab57f7e7bc75e5"
   },
   "source": [
    "#Data Processing"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "993f8fc0-1f5a-4432-80bc-6024b7bbc855",
    "_execution_state": "idle",
    "_uuid": "21bab04b0e0a451c912695d9238bf8304fc009d4"
   },
   "source": [
    "##Outliers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "2b19b08e-b8bf-44b0-b83d-ee3efd0b833e",
    "_execution_state": "idle",
    "_uuid": "70fc7612c38957f7418d03a409ff8bae21d522a9"
   },
   "source": [
    "[Documentation][1] for the Ames Housing Data indicates that there are outliers present in the training data\n",
    "[1]: http://ww2.amstat.org/publications/jse/v19n3/Decock/DataDocumentation.txt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "465043f2-d687-4b1f-a6b4-1036859dfeb0",
    "_execution_state": "idle",
    "_uuid": "32b12bca723c5e867f7d7a7e179ff934a5fcdf30"
   },
   "source": [
    "Let's explore these outliers\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "_cell_guid": "637bd0fd-7508-41d1-b240-ea0e8598dddf",
    "_execution_state": "idle",
    "_uuid": "8903aa1a4a700aa2160edb3baf806f3800ae7d9a"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(x = train['GrLivArea'], y = train['SalePrice'])\n",
    "plt.ylabel('SalePrice', fontsize=13)\n",
    "plt.xlabel('GrLivArea', fontsize=13)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "30304b82-5846-4142-bc31-b629158fb040",
    "_execution_state": "idle",
    "_uuid": "edf186dc5169e450392ee8f809cc3de5d10d7dbd"
   },
   "source": [
    "We can see at the bottom right two with extremely large GrLivArea that are of a low price. These values are huge oultliers.\n",
    "Therefore, we can safely delete them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "_cell_guid": "6c5780b2-d4a8-42d9-b902-c6a23eef7d99",
    "_execution_state": "idle",
    "_uuid": "583bb417102d7bebb4aaf14bcb1aebcae86443bb"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Deleting outliers\n",
    "train = train.drop(train[(train['GrLivArea']>4000) & (train['SalePrice']<300000)].index)\n",
    "\n",
    "#Check the graphic again\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(train['GrLivArea'], train['SalePrice'])\n",
    "plt.ylabel('SalePrice', fontsize=13)\n",
    "plt.xlabel('GrLivArea', fontsize=13)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e24be1ff-e186-4d0f-9ba1-64195c0eec4d",
    "_execution_state": "idle",
    "_uuid": "0f186c5806f14de1e9ea46ece78a4bed2a6830a7"
   },
   "source": [
    "###Note : \n",
    " Outliers removal is note always safe.  We decided to delete these two as they are very huge and  really  bad ( extremely large areas for very low  prices). \n",
    "\n",
    "There are probably others outliers in the training data.   However, removing all them  may affect badly our models if ever there were also  outliers  in the test data. That's why , instead of removing them all, we will just manage to make some of our  models robust on them. You can refer to  the modelling part of this notebook for that. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "f4dcb348-634e-4010-b0a1-27976a1d8353",
    "_execution_state": "idle",
    "_uuid": "886ad7c816f4c1fd9afda53b10990baf987e86d8"
   },
   "source": [
    "##Target Variable"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "658f5b56-5830-486c-81a0-8514fb95e274",
    "_execution_state": "idle",
    "_uuid": "4b96a6a35983d1c765c11c929bcd32effd105b43"
   },
   "source": [
    "**SalePrice** is the variable we need to predict. So let's do some analysis on this variable first."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "_cell_guid": "a17ad845-6fca-4d47-8e44-7c4c44f0427d",
    "_execution_state": "idle",
    "_uuid": "be3b0157031685ed3dbc31a657ba712312691830"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\anaconda3\\envs\\nlp\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " mu = 180932.92 and sigma = 79467.79\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAESCAYAAADNDrOsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4VFXewPHvlHRSIZQACf1IlyICgiKKKEgRe9l1UQHXupZXXXXd110E116w8qprw66LVFlEESlSFUI59J6ElklCkkmmvX/MJE7CJDNJZlJ/n+fJQ+bcc88990yY35xzzz3X4HK5EEIIIWqLsa4rIIQQommRwCOEEKJWSeARQghRqyTwCCGEqFUSeIQQQtQqCTxCCCFqlbmuKyBEsCmlBgMzgea4v1wdAh7UWm/1s9+/gXSt9XOV5OkA7AG2eCUbgJe11u/6yD8euFhrfU8VT8MvpdR84Eut9b+VUr8CI7TWlgryxgPfaK1HVrD9V2AEMBG4Smt9eRXr8gTwm9Z6rlLqH8BurfUHVSlDNB0SeESjopSKAOYDl2itN3rSbgIWKaU6aq0dQThModb6bK9jtgXSlVLrtdabvTNqrb8Fvg3CMSvlXZ8KJAKD/O2vlKpuFUYC2zxlPVHdQkTTIIFHNDbRQALQzCvtYyAXMCmlXMCLwGAgFndv5Tat9UrvQpRS3YGXcfeaTMArvno0AFrrI0qpXUA3pVR/4FYgBsgB3sfTg1BKtQbeBM4CnMCbWutXPL2Rl4HeQBjwPfA/Wmt7uTqleMpLAQ4ALb22uYBk3P+nPwBaeDYt0Fr/DXgPiPL0bAYABcBcoC9wI7DOsz9AG6XUYq/jTNFaZyqlfgRmaa2/9BzzR2AW0AoYCDyrlHIAE/D0HJVSw4FnPe9LMfC41nqxUupPwBWedujqqc/NWuvtvtpYNC5yjUc0KlrrbOAhYLFSaq9S6kNgMrBUa10MnIv7A3WI1roH7g/yR7zLUEqZgS+BR7TWA4ALgAc9Q3hnUEoNAboAv3iSeuIe9rqwXNbXgZ1a67OAIcBUpVQX3IFwg+dY/XAHjft9HOo1YI3WuidwD+4AVt4UYK/Wuj8wHOjqCWyT8fTUPL2+cGCe1lpprdeXK6MbcJfWug/uIcWXfZ13Ca31a8B63MHyG692aY67He/1lHUz8JFSqqMnywXA3VrrXrjb7hFEkyCBRzQ6WusXcH8LvwfIAB4GNiml4rXWq4HHgWlKqeeAqyjbOwL3B29n4F1PD2E5EIU7KICn5+D5Scd9PelGrfUhz/bNWutcH1W7GHjbU8ccrXUvrfVu4HJPfX4FNuAeEutdwf7/9uy/G1jmI89i4Eql1EJgGu7gmVNBU62oIH2pp3yAd4BRFeTz51zc13p+8dR5K7AS97UkcAfbw57fNwJJ1TyOaGBkqE00Kkqp84ChWutncV/rma+UehRIB0YppQpxf4N/HvdQ0w7gpnLFmICcctdxWuEeOmtNuWs8PpyuIN0OlC6OqJTqBJzwHO/qkmEmpVSCdz4vLtxDg97llaG1XufpUVyM+7rLWqXUZcDJKtTT+zqYEbBVcPzwCvYvYeLM8zDiHk4sBgq90suXLRox6fGIxuY48LhSaphXWhsgHvew0SjcQ0xv4B4emoj7A9KbBgo9kxJQSrXHHbgG1LBuS3EPeZXMMvse9/WN74D7lFIGz+SIb4G7fOy/GJjq2T8VKD+Uh1LqaeBvWuv/APcCW4FeuIOUSSkVyIf7hZ7yAW4HFnl+P477Wg5KqR5AH6997LgDirfVwFlKqUGefXoC5wM/BlAH0YhJ4BGNitZ6J+5gMsNzjWcb8DkwWWutcV/cH6GU2oJ7eGcP0FEpZfQqoxj3BfLblFKbgSW4P8xXUjN3Ad09Za4EZmqtN+AeEozBHRg3e/59xsf+dwI9lFLbcQ+B/eojz0vA2Z4hwPXAPuBT3EOOa4GtnmsvldmMe5gxHUjl9+tN04FLPOn/AH7y2udbYKZS6uaSBK31CeBq4FVPe8/B/T7s9HN80cgZ5LEIQgghapP0eIQQQtQqCTxCCCFqlQQeIYQQtUoCjxBCiFol9/H44HQ6XQ5H8CddmEwGQlFuYyPt5J+0kX/SRv4Fs43Cwkwn+H3ZpUpJ4PHB4XBhsRQEvdyEhOiQlNvYSDv5J23kn7SRf8Fso+Tk2AOB5pWhNiGEELVKAo8QQohaJYFHCCFErZJrPKLKHA472dnHsduLQ1J+VpYBWVGjctJG/kkb+VedNjKbw0lMTMZkqn74kMAjqiw7+ziRkdHExLTGYAj+gsImkxGHwxn0chsTaSP/pI38q2obuVwu8vNzyc4+TosWbap9XBlqE1VmtxcTExMXkqAjhKi/DAYDMTFxNR7tkMAjqkWCjhBNUzD+70vgEUIIUask8AghhKhVMrlAVKrIBQU2R5k0hwucLjDKaJsQohok8IhKFdgc/LDjWJm0vgkOnC4Xxjq8zrNx43oeffRB3n//U1q1ag3AG2+8SlpaB8aMGRey4y5cOI8DB/bz5z/f7XN7UVERN954FQ8++FeysjKZMGGSzzxLlixi3LiJlR4rJ8fCW2+9xkMPPRaUuvuydWs6b7zxCrNmvQ2A3W5n+vS/k5mZgdFo5OGHH6d9+1Sef/5pdu/eRVhYGI888jfatWtPcXExM2Y8ydGjR4iJieH++x+mfftUHA4H//rXdA4dOoDRaOLRR/9Oq1atmTnzSTIyMrDZirn55lsZNuyCMnXxVV6bNil+96uukvfqyy/nBaW8iixcOI+FC93HKC4uZvfuncyd+x0RERE+2w8gO/sUt976B1588TXS0joA8OGH7/Hzzz9hs9mYNOkqLr98YoVlx8bGVnjsL7+cxyuvvMDRo0do1qwZ9933UOlxS5w8eYL333+H++9/OCRtIoFHNFhmcxgzZvyDl156rd5Ndhg8eGiF206dOsm8ef/xG3hmz36DSZOuAeCuu6by0EOPkpragZwcC3ffPY0PPvisRnX8+OP3+e67hURGRpWmrV79Mw6HgzfffJd169bw9tuvcckll1FcXMxbb71HevoWZs16kaeffoF5874hKiqat9/+NwcP7ufFF5/hhRdmsXLlCgDeeONdNm5cz6uvvsDw4SOIi0vgb3/7Jzk5FiZPvvGMAOKrvIsuusTvfsG2a9dOXnrpWXJyLBw4sB+Xy8XkyVO49dZp1SpvzJhxpV+Gnn/+X4wdO57Y2Fi++uozn+1nt9t55pkZhIdHlJaxceN6tmzZzBtvvIPVauWTTz6stOzKjv3DD0tLj3v48EFeeMF9XG/Nm7cgOjqGTZs20K/fgGqdd2Uk8IgaWbx4Qek3qmC5/PLxXHLJGL/5BgwYiNPp4uuvP+fKK68tTbfb7cyc+SRHjhzB4XBw3XU3UlRUxIIF3+J0Orn11mkcO5bFypU/UVRUxMmTJ7j66utZsWI5+/bt4c4776V//4E8/fR0Tp/OIyfHwrhxV3DFFVf5rEdBQQH/+Mfj5OXl0bZtO+D3ntHYseOZMeNJzGYzJpOJxx9/kg8+eJf9+/fx3nuzmTx5is8y8/NPs337Nh58sCsAR44cpl0797fSPXt207lzlzL577jjNgoKzlzs8c477+Wcc871eYy2bdvx1FPP8s9/PlGa1r59Gg6HA6fTSX5+Pmazmc2bf+Xcc4cA0KtXb3bs2A7Avn37SgNsamoH9u/fB8D5549g6NBhAGRlZZKY2JwLL7yYCy+8qPQ4vm4+9FWev/3y80/7fJ8WLpzHmjWrsFoLOXLkMDfeeDNjxozz+V55Kyoq4u9//yuPP/4kPXr0YvbsNyguLuaWW6bWqK0BduzYxr59e3jggYcrbb9Zs15i4sQr+fDD90r3Xbt2DZ07d+HRRx8kPz+fO++8t9KyKzv2c889XXrctLTfj1veqFGX8s47bzWcwKOUMgKvA32BIuA2rfVur+1TgGmAHZiutZ6vlGoBzAGigKPAZK11QRDypgIfAgbgFHCD1lqWrG0kHnzwEaZMuZlBg4aUps2d+xXx8e5vyQUF+dxyy02MHz+J2NhYnn76BcAdGAoKCnjxxddYuvQ7PvtsDm+//W82bdrAF198QsuWrbn44ku44IKRnDhxnLvumlph4Fm0aB4dO3Zm2rQ72bo1nY0b15duW7fuF5Q6i7vvvp/ffttEXl4uf/zjLezZs7vCoAPuIbDU1DQAMjMzaNEiGaPRPRdo9+5ddO7ctUz+11//vyq33YgRF5GRcbRMWlRUFJmZR7nhhqvIybHwzDMvsmDBt8TENCvNYzQasdvtdO3ajVWrVnD++SPYujWdEyeO43A4MJlMmM1mpk//Oz/99CPTp/+L6OhoAAoK8nn88YeZMuXPZ9THV3kRERGYTKYK9zt8+HCF71N+fh7PPz+LQ4cO8vDD9zFmzLhK3yuA9evX0q3bWfTo0QuAzp278ssvq8r0qKvT1gAffPBemQDm63znz/8PCQkJnHvukDKBJyfHQmZmBs888xIZGUd4+OH7mTPnq9J6lS+7smN7Hzc9fXOZ981bhw4d2bLlt2qdqz+h6vFMBCK11kOUUoOB54EJAEqp1sA9wEAgEvhZKfVf4Algjtb630qpR4BpSqlPgpD3PuAzrfXrSqmngFuBV0N03k3OpZeO5dJLxwa1zKrcTR0fn8A99zzAjBn/S+/efQHYv38/AwcOAiA6OoYOHTridDpKP8hLdO2qAGjWLJYOHTpiMBiIjY2lqKiY5s2b8/nnc1i+/Aeio2Ow2+0V1mHfvr2lPYKePXthNv/+3+ryyyfw8cfv88ADdxMT04xp0+4M6LwsFgtJSUkA7Nql6dLl90Cj9XZGjRpdJn91v4WX9/nncxg0aAi3334XWVmZ3HvvnznvvOFlyna5XJjNZsaOHc+BA/u4++5p9O7dF6XOKvPh9fjjT3Ly5AmmTv0TH330Bbm5OTz66P9wxRVXcckll55x7IrKy8rKrHC/yt6nkve3ZctWFBe7b3is7L0C2Lt3T5ne5M6dO+jW7awyearT1nl5eRw8uJ/+/QdWer6LFi3AYDCwfv1adu/eyfTpT/D00y8QFxdPamoHwsLCSE3tQHh4BBZLNomJST7LruzY3sft2/fsM963EiaTCZPJhNPpLP3SEyyhCjzDgMUAWus1SinvFhkErNRaFwFFSqndQB/PPjM8eRZ5ft8ThLy/AiV96jjgkL/Km0wGEhKiq3XilZdrDEm5oVSYYyU6KrxMmtFgxWg0YDKFbja+v7JNJiMGg7sOF1wwghUrfmTRovnceee9dOzYkS1bfmXkyIvIz89n79499O17tuc/krvckvqbTEaMRkNpWUajEYMBPv30I/r06cukSVezYcM61qz5uTRv+XPv0KEj27alM2LESLTegd1uL823atVP9OvXnylTbmfJksXMmfM+t912Oy6Xq9JzbN68OadPn8ZkMrJnz25stmJMJiOHDh3k559/4vbb7yyz/1tvvVvtdjYYfm/vuLh4z7CgkcTEROx2O9279+CXX1ZxySWjSU/fTOfOXTCZjGzbtp2zz+7Pfff9D9u3byMj4wgmk5FFi+Zz7Ngxbr75FmJiojEajeTl5XD//XfxwAMPV/jh7Ku8nJzsSver7H0qeU9Lzs1kMvp8r7zbMTExgQ0b1mEyGTl48AA//fQDb7/9Xo3besuWXznnnHPLlOPrfP/5z6dLt99xxxQeeuhRWrZsydln9+Pzzz/hxhv/wIkTJ7BaC0lMTMRkMvosu7Jjlz/ukSOHfe7r/oJhIizszDBhMNTsMzJUgScOyPF67VBKmbXWdh/b8oD4cum+0qqb9zDwtFLqBiAC+F9/lZcHwf3OWuygoLDs8hjOCBdOp4siZ9lp1kaDIShTrAPp8TgcTlwuV2m+e+65n/Xr1+J0uhg37gr+9a/pTJ06maKiIiZPnoLL5cJiySnN73S6z8HhcOJ0ukrLcjqduFwwdOhwnntuJosXLyQ+Ph6j0URhobXMfiUmTryKmTOfZOrUyaSlub+VluTr1q07//jH3zCZ3sRoNHL33fcTF5eAzWbj1Vdf4qabbubpp6czY8azZc6ve/eevPbayzgcTnbu1ERERHDTTdfSpUsX0tI6sHDhfG6++dYat7W7HSk9n6uvvp6ZM//BtGm3YLPZmDr1TkaOvIRNmzYyZcqfcLlcPPro33E4nKSktOett97g448/oFmzWP7617/hcDgZPvxCZsx4kttvvxW73c4999zPnDkfkZeXx7vvzubdd2cD8Pzzr1BUVFR6/r7Ke++9d3zuFxERCVT+PpWcX8m5ORxOn++V93s5cuQl/PTTcm644Sri4xP4+9+folmzuBqv+bZ//z7atEkpU05F7VfC5fr9b23IkGFs2rSBW275A06n0zPbzIDD4Tyj7NzcnDJ/U+W3ex83NjaWRx75m8/z2717Fz179va5zf3/qexnWXJy7Bn5KmIIxeqtSqkXgDVa6889rw9rrdt5fh8PXKq1vsPz+hvgKeBtT/oxpVTfcmk1zftXrfV3SqmxwB1a60rHhmw2h0sCj1t2sa/p1IW0b9eRfKutTHpsZBjmIEQeWdzR7dlnZzBhwiT+9rdHeO+9j4mOjindJm3kn7SRf5W10euvv8x5551P3779ztiWmXmA1q3LDl0nJ8duwH2pw69QjZWsBMYAeK7xbPHathYYrpSKVErFA92BdO99gMuAFUHKm83vPaGjQGLwT1eI4Lvtttv58svPMBiMZYKOEKF28uQJ8vPzfQadYAhVj6dkVlsf3LPJJuMOFLu11t96Zp9NxR34Zmitv1JKtQLeB2KBE7hnn+UHIW8PYBZg8tTlXq31psrqLz2e30mPp36SNvJP2si/6rZRTXs8IQk8DZ0Ent9J4KmfpI38kzbyr64CjywSKoQQolZJ4BHVIj1lIZqmYPzfl8AjqqzQYaQwP1eCjxBNTMmjr83mcP+ZKyFrtYkq23s6jMSYAqzWU2XSC8JMmIJwH4/BYJCg5oe0kX/SRv5Vp43M5nASE5NrdFwJPKLK7C4jxthkfss8Xib9wrNakhh+5tIbVdUQJ2HUNmkj/6SN/KurNpKhNiGEELVKAo8QQohaJYFHCCFErZLAI4QQolZJ4BFCCFGrJPAIIYSoVRJ4hBBC1CoJPEIIIWqVBB4hhBC1SgKPEEKIWiVL5ogq08dOs2z3SXq1akbL2Ii6ro4QooGRwCOqxOF0sVQfJ9dqZ93+UwxKS+S8TkmEm6TzLIQITEgCj9ejr/sCRcBtWuvdXtunANMAOzBdaz1fKdUCmANEAUeByVrrgiDkfQk423Po1oBFaz04FOfdFGzLzCPXaufekV34Yccx1uzPZuex09wyOLWuqyaEaCBC9TV1IhCptR4CPAI8X7JBKdUauAc4DxgNzFRKRQBPAHO01sOBTcC0YOTVWv9Faz0CGAXkAFNCdM6NnsvlYvX+bFo2C2ekSmZsz1Zc0ac1pwps7Mg6XdfVE0I0EKEaahsGLAbQWq9RSnk/h3sQsFJrXQQUKaV2A308+8zw5Fnk+X1PEPKu8+S7G1iitd7ir/Imk4GEhOjqnXml5RpDUm4oFeZYiY5yP/RpW0YuJ/OLubp/O8LMJqKjwumXlsSKvaf47WgukRFhJMRH1viYDbGdapu0kX/SRv7VVRuFKvDE4e5dlHAopcxaa7uPbXlAfLl0X2nVzYtSKhz3ENygQCrvcLhC8oyKhvh8EGuxg4LCYlwuFz/qYyREhdEpMRK7w0lBYTEAfVPi+H7nCbYezibKFV/jYzbEdqpt0kb+SRv5F8w2Sk6ODThvqIbacgHvWhg9QcfXtljAUi7dV1p18wJcDPyktfYOTKIKDpwqJCO3iMEdEjEayz5mtHdKHGajgXlbMuuodkKIhiRUgWclMAZAKTUY8B7eWgsMV0pFKqXige5Auvc+wGXAiiDlBXfgWRSKE20qNh/NJTrMRO+UM7/VRIWZ6NE6lmU7j3O6yO5jbyGE+F2oAs83gFUptQp4EbhPKXW/Umq81joTeAV3sFgGPKa1tgLTgeuUUiuBIcCsIOUFUMDeEJ1rk5CRa6VdYiRmo+8/mX7t4rHanCzcdqyWayaEaGgMLperrutQ79hsDpdc43HLLnawaEsGL/64lwu6NGdoxyQAhnRNZvWu46X5XC4XX/6WgdPp4tObB2AwGCoq0q+G2E61TdrIP2kj/4J8jWcDMNBvRmTJHBGArLwiAFrHVbxKgcFgYGyv1uw9WcDOY/llthW53AHM+6dIvu8I0WRJ4BF+ZeR6Ak9s5VOlz+vcHKMBlu85USa9wObghx3HyvwU2Bwhq68Qon6TwCP8ysy1Eh9pJjrcVGm+hKgw+qTEsXz3yVqqmRCiIZLAI/zKyC2iTVxgN4ae37k5O4/nk5Fr9Z9ZCNEkSeARlcqz2rEU2iq9vuPtgi4tAKTXI4SokAQeUaldx9xrsAXa40lNjKJjUjTL90jgEUL4JoFHVGqnJ/C0CrDHA3B+l+ZsOmQh12oLVbWEEA2YBB5RqV3HT5MQFUZUWOUTC7xd0Lk5Dhes3HcqhDUTQjRUEnhEpXYeO02bKvR2AHq2iaV5TDg/yXUeIYQPEnhEhSwFNrKqMKOthNFgYHinJFbty6bY7gxR7YQQDZUEHlGh7cfygMpXLKjIBV2aU2BzsPGwxX9mIUSTIoFHVGh7pmdiQWzVA8+A9gmEmwys3p8d7GoJIRo4CTyiQvrYadomRBJZhYkFJaLCTPRrF88aCTxCiHIk8IgKHcguIDWx+o/FHdIhib0nCzjmWWRUCCFAAo+ogNPl4rDFStuEqk0s8Da4QyIAGw5Kr0cI8TsJPMKnY3lFFNmdpCREVbuMTs2jadksnHUHZIKBEOJ3EniET4cshQC0ja9+j8dgMDCkYxIbD1lwOOUBPEIIN3MoClVKGYHXgb5AEXCb1nq31/YpwDTADkzXWs9XSrUA5gBRwFFgsta6IAh5Y4A3gI5AOHC31nptKM67MTmU7Qk8CVFY8ourXc7QDonM3ZLJ0Rwr7ROr33sSQjQeoerxTAQitdZDgEeA50s2KKVaA/cA5wGjgZlKqQjgCWCO1no4sAmYFqS8/wOke/JOAVSIzrlROWSxEmE20qJZeI3KOSc1EaMB9p7M959ZCNEkhKTHAwwDFgNordcopbyfwz0IWKm1LgKKlFK7gT6efWZ48izy/L4nCHlHA58ppb4DcoE7/VXeZDKQkFD92VwVl2sMSbmhkHm6mNSkaKIjw4mOOjP4mE3GM9IjI8JIKDc0lwD0Soln/6lCLvPK7ytviYbUTnVF2sg/aSP/6qqNQhV44oAcr9cOpZRZa233sS0PiC+X7iutunlbAIla69FKqT8CzwF/rKzyDocLi6UgsDOtgoSE6JCUGwp7jp8mLTEKa5GNgsIzh9rsDucZ6UXFdvZ5Vjvwdnb7eD5Yc5DjOQXEhLv/5KxFNiwW38vpNKR2qivSRv5JG/kXzDZKTo4NOG+oAk8u4F0Loyfo+NoWC1i80gt9pNUk70ngW0/aPNxDf6ISTpeLI5ZChnVMqtJ+hXYnq3cdPyO9b7sE4CD7TxbSs03gf5xCiMYpVNd4VgJjAJRSg4EtXtvWAsOVUpFKqXigO5DuvQ9wGbAiSHl/9sp7PrA1+KfbuGTlFVHscNEuSJMBOrWIIcJs5GC2fPsUQoQu8HwDWJVSq4AXgfuUUvcrpcZrrTOBV3AHi2XAY1prKzAduE4ptRIYAswKUt4ZQD+l1GrgAdyTDUQlSma0pdbgHh5vJqOB9glRHDhVGJTyhBANW0iG2rTWTuD2csk7vLbPBmaX2ycLuNRHWTXNewqYVLUzaJqKXFBgc6BPuGegxTULxxGk22/SkqLYfSKfXKuNuMiw4BQqhGiQ5AZSUarA5uCHHcdYs/cUZqOBLYcs2IJ042eqZ9hOej1CCAk84gynCmwkRodhMBiCVmar2AgizUYOZkvgEaKpk8AjzpBdWExidHCHwwwGA6mJUTLBQAghgUeU5XS5sBTYSYqu2YoFvqQmRWMptJNTaAt62UKIhkMCjygj12rH4XKRGBX8CQBpJdd5ZLhNiCZNAo8oI7vAvRpBUpCH2gCSm4UTFWbiwCkZbhOiKZPAI8o4VeAeBksMwVCbwWAgLTGKg9mFuFzymAQhmioJPKKM7AIbYUYDzSJMISk/NSmKXKudjFxrSMoXQtR/EnhEGdkhmErtreQ6z+YjuSEpXwhR/0ngEWVkF9pICMH1nRLNY8KJNBvZnnHmKtZCiKZBAo8o5XK5yCm0kRCCGW0lDAYDbRMi2ZYpPR4hmioJPKJUdoENu9MV0sAD0DbevWBorlXu5xGiKZLAI0qVXPCPD/Einm0T3E8eTZfhNiGaJAk8olSmJ/CEuseTEheJ0QCbj8pwmxBNkQQeUSoztwiA+KhQPZjWLdxspFOLGAk8QjRRAQUepVSrUFdE1L3MXCsx4SbCTKH/PtKjdSxbM/JwBOmxC0KIhiPQT5ivlFLfKKUuV0pJL6mRyswtCvkwW4nubWIpsDnY43nonBCi6QhoTEVrPUwp1R24BXhcKfU98I7Weq+v/J7g9DrQFygCbtNa7/baPgWYBtiB6Vrr+UqpFsAcIAo4CkzWWhcEIW8SsBNI9xz+G631ywG3UBOSmWulRQiWyvGlR+s4wH2dp1vLZrVyTCFE/VCVwfyjwF5gANALeFkptUlr/YSPvBOBSK31EKXUYOB5YAKAUqo1cA8wEIgEflZK/Rd4Apijtf63UuoRYJpS6pMg5O0PfKK1vrsK59rk2J0ujucV0bl5TEjKzzmZhV63nKxDeyjIs9A6KZ7Ywnh+js/jqrNTQnJMIUT9FFDgUUp9jjvYfATcpLU+6klfjzsIlDcMWAygtV6jlBrotW0QsFJrXQQUKaV2A308+8zw5Fnk+X1PEPIOAPorpZYDx4B7tNYZlZ2vyWQgISE6kKapEpPJGJJyg+FQdgFOF7SMjyQ66vdej9lkLPO6snRfaadzTvHaM6/z07IlACS1aktsQnPycnOw71rHxq1LeGD7Qh588CG6d+8O1O92qi+kjfyTNvKvrtoo0B7PbGC11vq0UqqNV/qwCvLHATlerx1KKbPW2u5jWx4QXy7dV1oDzrZdAAAgAElEQVR18+4ANmitlyqlbgReBa6q7GQdDhcWS/CX7k9IiA5JucGw/WA2ANEmAwWFxaXpdoezzOvK0sunHdi+iYXvPovDXszAi6+gz/AxxCUlA3DhWS35es0uZn/6Fbt2r+DGG6/n9tvv4uqrrycxMabetlN9UZ//luoLaSP/gtlGycmxAecNdKLAUOBJz++veIa30FpXtMRwLuBdC6Mn6PjaFgtYyqX7Sqtu3mXAD560b4B+lZxnk3U0x3PzaJAmF6SvWsJ/3vgHsUnJPPvGBwybcHNp0CkxsHMbHJ2HM+1/X2fw4KHMmvUSr7zyPE6nMyh1EELUT4EGnvFa6wcAtNZXA+P85F8JjAHwXOPZ4rVtLTBcKRWplIoHuuO+8F+6D3AZsCJIef8PuNKT9yJgQ4Dn3KQczbViNEBcRM3v4dm2ZhlL57xG6llnc819M0lpn+Yz31mtYjEbDezNM/DUU89yzTXX89VXn/PUU9PleT1CNGKBBh6nUiocQCkVFsB+3wBWpdQq4EXgPqXU/Uqp8VrrTOAV3MFiGfCYp+c0HbhOKbUSGALMClLeR4A/K6V+BG4H7g3wnJuUozlWWsVGYjTW7HEI+7dt5L8fv0p71YdxU/5KeGTF48cRZiPdWjYjPSMXg8HAnXf+heuvv4kvvvicjz/+oEb1EELUX4F+vX0TSFdKbQHOAp6pLLPW2on7Q97bDq/ts3FfN/LeJwu41EdZNc27D7iwsvoKd+BpHRdRozIyjx5m0XvP0TwllXFTH8Uc5n9qdu82sXybnond6cJsNDBt2l1kZ5/k7bdfo3PnzgwZUtFlRCFEQxVQj0dr/Q5wHu6Ac4HW+v2Q1krUuiM5VlrHRVZ7f4fdxotPPQ4Gg7unExFVaX6DwUB2sYMOyTEU2pz8mpFHkQuMRiP//Od0unTpyowZT3LsWFa16ySEqJ8CXTLnbNyTC6YBzyil3g1prUStstocnCqw1ajH88uiz9i/eyejbryb+Bat/eYvtDv5YccxcvLds+Dm/naUApsDgIiICP73f2dQXFzMjBlPyvUeIRqZQK/x/BvYCHzm9SMaiSOeGW2t46vX48k8sIt1S75ixCVj6dJ3cJX2TYgKIyrMVDqrrkRqahp33vkXNm5cz/z5c6tVLyFE/RToNZ5MrfX/hbQmos6UfOi3josk01JYpX2dDgfff/I60XEJ3Hz7X/jtaNXuCTAYDKTER5wReADGjZvI998v4bXXXmbw4KEkJ7esUtlCiPop0B7PfqXUI0qp0UqpS5RSl4S0VqJW/R54qj7U9ttPCzl+eC8jrrqN6JjqLbeTEh/Jifxi8ovsZdINBgMPPfQYdruNt956rVplCyHqn0ADTwSggOuA6z3/ikbiaK6VSLOxyitTW/PzWL3wE9K696PL2UOrffwUzxCfzjp9xra2bdtx7bU3smTJIrZs+a3axxBC1B+BzmqbDMwEPgf+BtwWykqJ2nU0x0pKfCQGQ9Xu4Vn3368othYwfOKfqryvtxTPbLodWb4fhX3TTX8iObklr776okw0EKIRCHRW213AG7gX47wS942aopE44gk8VXHy+DF+Xb6A7ueMoEXbDjU6fmSYieYxYRUGnqioKG65ZSo7dmxj5coVNTqWEKLuBTrUdh1wMWDxPMvm3NBVSdQml8vF0RwrbasYeL746B1wORly+Q1BqUdKfCTbM09X2KMZPXoMbdu255133pS13IRo4AINPCX5Sj4VikJQF1EHLIU28osdtE2o/IZPb6cyD/HjkgX0GX4ZcUnBmWmWEhdJTqGNo7m+1501m83ccssU9uzZzY8/fh+UYwoh6kaggWcO8BPQRSm1EPhP6KokalPJPTztqtDjWTXvYyIjIxk0+pqg1aMk8KUf9T3cBjBy5Cg6duzEu+++jd1urzCfEKJ+C3RywSxgKvAA8IjW+rmQ1krUmiMWd+BpmxBY4DmZcZDdv61mzBXXEdUsLmj1SI4JJzLMyOajuRXmMZlM3HLLNA4ePMDSpd8F7dhCiNoV6OSCJ4CrcT9qYKLntWgEDue4bxhNCXCdtg1Lv8EcFs6lEyp9ll6VGY0GureK5bdKAg/A+eePoGtXxfvvv4vD4QhqHYQQtSPQobYsz88xoB2QGrIaiVp1xGIluVk4kWEmv3nzso+zY91yeg0dRVx8QtDr0jMljl3HT5NnrXgYzWAwcNNNN3PkyCFWrvwp6HUQQoReQEvmaK3f8n6tlFoUmuqI2nakCjPaNi77Fhcu+l80MSR16dUmDqcLfj1soXeLip/jM3z4CNq0SeHTTz/m/PPliRdCNDQBBR6lVDevl22QHk+jcdhSyDlpiX7zWfPzSF+5BDXg/KDNZCvvrNbNMBlgw4HsSgOP2Wzmmmuu5+WXn2fLls307t0nJPURQoRGoENtb3n9PAI8GLIaiVpTZHdy/HRxQD2e31YswlZsZeDFV4SsPtHhZrq1bMaGA9l+81522ThiY+P47LOPQ1YfIURoBDrUVqXxDKWUEXgd6Iv7np/btNa7vbZPwf1sHzswXWs9XynVAve07SjgKDBZa11Q07xexzwf+Fhr3b4q59KYZeRYcYHfwGO3FfPrj/Pp0HNAjVcp8Kdv23j+syUDu8OJ2VTx96Lo6GgmTrySjz76N4cPH6JdO3lbhWgoAp3V9ptSaq9Sapvn371KqX1Kqb0V7DIRiNRaD8HdQ3req6zWwD24n2g6GpiplIoAngDmaK2HA5uAaUHKi1KqPe6p4FVbBbORK72Hx8/No7s2raTwdA79Lxwf8jqd3TYOq82JPnbmgqHlTZp0NWazmc8/nxPyegkhgifQobZVwI1a6x7ABOBn4Czc06t9GQYsBtBarwEGem0bBKzUWhdprXOA3UAf732ARbiX6KlxXqVUJPAmcEeA59pkHPFMpfbX4/l1+QISW7Wjveob8jr1TXHfG/TrkcqnVQM0b96CUaMuZfHiBeTlVXzjqRCifgn0QXA9tNarAbTWW5RSqVrrypbNiQNyvF47lFJmrbXdx7Y8IL5cuq+06uadBTyntT6ilAroZE0mAwkJFV/cri6TyRiScqvreKGd6HATnVLiMRgMFOZYiY4KL5Nn367tZB3YxSU33kFM9O/P6zGbjGfk9ZVWlbyREWG0aRlLWlI0W4/lB9RWf/zjH1i4cB7Lly/hppv+4Dd/Y1Hf/pbqI2kj/+qqjQINPBal1D+Btbh7Gwf85M8FYr1eGz1Bx9e2WMDilV7oI626eYuB4biX+vk7kKSU+lRrXenzhBwOFxZL1Z6kGYiEhOiQlFtde4+ddq+R5un5WIsdFBQWl8mz4psvCI+Moku/4WW22R3OM/L6SqtKXmuRDYvFSf+0BH7ccZzs7Hy/j1tISelAz569+OSTTxg7dlKNHs/QkNS3v6X6SNrIv2C2UXJyrP9MHoEOtd2A+4P9UmAvcKuf/CuBMQBKqcHAFq9ta4HhSqlIpVQ87uG6dO99gMuAFUHIu1ZrrbTWI7TWI4BT/oJOU3Ikp7DSYbaCPAurf/qeHueOJDyy9r4VDUxNJLvQxsHswB7DfcUVV3Po0EE2bFgX4poJIYIh0MBjBbKBE4AG/N22/g1gVUqtAl4E7lNK3a+UGq+1zsT9PJ8VwDLgMa21FZgOXKeUWgkMAWYFKa/wweVyccRirXSNtvSVS7DbbPQ5f0yFeUJhgOe+ot8CuM4DcMEFI4mPT+Cbb74MZbWEEEES6FDbW7inLY8C1gMf8HuP4wxaaydwe7nkHV7bZwOzy+2ThbtHVb6sGuUtt711RduampMFNqx2J23jfc9oczocbP55MX0GDCKpVbtarVunFjEkRoWx7pCF8b39v2URERFcfvkEPvnkQ7KysmjVqlUt1FIIUV2B9ng6a62fAKxa63m4L9qLBuyIxTOjrYIez4HtmzhtOcmosaG7YbQiBoOBczsksmZ/Ns4AH3U9fvwVuFwu5s37JsS1E0LUVKCBx+y5adOllIoF5BGQDVzJPTwVXeNJX/1fomPj6X/uebVZrVJDOyZiKbSxPTOwadJt2qQwZMgw5s//jzyrR4h6LtDA8xjuC/oDgTXAkyGrkagVRyxWDPh+HEJ+roV9W9bRfdCFmM2BjsYG15C0JAzAqv3+l88pMX78RE6dOsXq1T+HrmJCiBoLNPC011oroDPQS2u9NIR1ErXgcE4hLWMjCDef+SewY+0POJ0Oeg4ZVQc1c0uIDqNH61hW7zsV8D6DBg2hRYtk5s2bG8KaCSFqKtDAMxVAa31cax3YoLuo145YfD8OweVykb56KSmdupPUunYnFZQ3tGMi6Rl5WAptAeU3m82MGTOOtWtXk5WVFeLaCSGqK9DAE6GU2qSU+lQpNUcpJYtjNXCHK3gOT8beHWRnHabnkIvroFZlDe2YhAv4pQrDbWPGjMPpdLJ48Xz/mYUQdaLSwKOUetzz68PAs8Ab/P54BNFAnS6yczK/mNTEM6dSp6/+L2ERkXTtXzeTCrx1bxVLfKSZVfsDH25LSWnLwIGDWLDgW5xOmQMjRH3kr8czEkBrvRz3ow2Wl/yEvmoiVA55plKnJZVdjaCgIJ9dG1eiBgwnPKLyFatrg8loYHCHRFbvC3xaNcDYsRPIzMyQlQyEqKf8BR5DBb+LBuzAKXfgKd/j+fnH77EVW+k5tO4mFZQ3tGMS2YW2gB6TUGL48AuIi4tj/nyZZCBEfeQv8Lgq+F00YAezCzAA7cs9h+e/C7+leZtUWqd1871jHRjcwb18zsq9gQ+3hYeHM3r0GFas+BGLxRKqqgkhqslf4BmglFqllFrt/btnDTbRQB04VUib+MgyU6n37dvDzh1b6Tnk4nq1wnNSdDi928SybNeJKu03duwE7HY7S5YsDFHNhBDV5e/uwD61UgtRqw5mF5JWbphtwYJvMZvNdB9Upaec14pLu7fk2WV72HX8NF2TmwW0T6dOnenZsxfz58/l6quvr1fBVIimrtLAo7X299wd0cC4XC4OZhfSt21caZrNZuO77xYxaOhwoprFVbJ33Rilknnhx70s3n4s4MAD7l7PM888RXr6Fnr3lu9QQtQXgd7HIxqJE/nFFNgcZWa0rVz5Ezk5FkZdNr4Oa+ZeHDS72EFGjpXsYkfpT3RUOEM6JLJ4+7EqzW4bOXIUUVHRLFggkwyEqE8k8DQxvma0zZ8/l5YtW9G3/zl1VS0ACu1OfthxjOU7j/PDjmOlPwU2B5d1b8mx08VsPJTjvyCP6OhoRo68mB9+WEpBQX4Iay6EqAoJPE3MwWz3Y25LrvFkZWWybt0vjBkzDpPJVJdVq9T5nZsTE25i4Tb3UjhFLsr0irKLHRT56AyNGTOewsJCfvjh+1qusRCiIhJ4GrnyH9D6RAERZiPxzSIAWLTIvbTMZZddXpfV9CsyzMSFXVuwbNcJrDYHBTZHmV5RSc+ovF69epOa2oEFC76tg1oLIXwJyZr3Sikj8DrQFyjCverBbq/tU4BpgB2YrrWe73nezxwgCvfTTidrrQuCkLc18DEQDmQAf9JaF4TivOujkg/oEr8dthAfacZqdxJhNrBw4TwGDBhEmzYpZBef+cFdn1zWvSXzt2axYu8pBnZMCmgfg8HA2LHjeOONVzlwYD9paR1CW0khhF+h6vFMBCK11kOAR4DnSzZ4AsE9wHnAaGCmUioCeAKYo7UeDmwCpgUp7yPA+56823AHpibrVL6NpJhwDAYDy3/5hczMDEaMvpzsYgeOen6L8ID2CSQ3C2f+1swq7Td69BhMJhMLF0qvR4j6IFSBZxiwGEBrvQb3A+RKDAJWaq2LtNY5wG7c9wuV7gMsAi4OUt77gI88vbD2QJNdL9/hdGGx2kiKDqfQ7uTjz74gMjoWa4vu/LDjGDZn/Yw8JbPdcu1ORndvxap92RzMLgx4/6Sk5gwZch7ffbdQnk4qRD0QqsdLxgHe048cSimz1truY1seEF8u3VdatfJqrV1KKTPwGxAJ/MNf5U0mAwkJ0f6yVZnJZAxJuZUpzLESHRUOwPG8IlwuaJMQReHpPPZsXkO/C8YSFxcDgNlkLM1bwldaqPKWpBmNhjLbbC7YcMC99E1KYhRGA8zbksnAtMQy+0dGhJFQwaO8r7nmGu655ye2bFnPhReO9JmnIamLv6WGRtrIv7pqo1AFnlwg1uu10RN0fG2LBSxe6YU+0mqSF621DeihlLoY+AC4oLLKOxwuLJbgXwZKSIgOSbmVsRY7KCgsBuDoKfeU4mZhRn5cugiH3Y4aNLJ0u93hLP29hK+0UOUtSYuOCi+zzTuvCTirVSz/3Z5F56QoIryW/bEW2bBYfD8KoVev/iQlNefzz7+kX7/BPvM0JHXxt9TQSBv5F8w2Sk6O9Z/JI1RDbSuBMQBKqcHAFq9ta4HhSqlIpVQ80B1I994HuAxYEYy8SqnXlVIl68DkAU32IS0nC9xP8kyMMrNs8TxapXUluW2Huq1UNQxMTaCg2EF6Rm7A+5jNZi69dCxr1qzkxImqrfsmhAiuUAWebwCrZzHRF4H7lFL3K6XGa60zgVdwB4tlwGNaayswHbhOKbUSGALMClLeV4C/K6V+AGYAd4TonOu9U/nFRIebyMnYx8F9e+rFU0aro218JN1aNmPDIQuuKqxkMGbMOBwOhywcKkQdC8lQm9baCdxeLnmH1/bZwOxy+2QBl/ooq6Z5dwAjqnQCjdSpgmKSosPYumox4RERqAHD67pK1XZ5nza8sHQX+04V0Kl5TED7pKam0adPXxYs+Jbrr/+DLBwqRB2RG0ibkJMFNhLDXOgNKxg8fCQRUYF9YNdH53lWMlh/sGrP2xkzZjyHDh0kPX1ziGomhPBHAk8TUVDsoKDYAUc2U2wt4MJL6/dKBf6EmYz0bx/PnhMFHD9dFPB+I0Zc5Fk4VO7pEaKuSOBpIk54PpxPbV1BQnIK3XudXcc1qrkB7RMIMxr4ZX92wPvIwqFC1D0JPE3EsdPFGPKyOHVwB73OG9Uorm9EhZno2y6erZl55FptAe83dqx74dBly5aGsHZCiIpI4Gkijp8uIuLQWowmMz3Obfg3UJYYlJqAC1h3IPBrPT17uhcOXbhwXugqJoSokASeJuJYTj7Gg+vp3GcQ0bEJdV2doImPCqNHq1h+PZJDnjWw5XDcC4eOJz19M/v37wtxDYUQ5UngaQJcLhcnd23EVZRPr6Gj67o6QXduh0SKHS7mb8kIeJ/Roy/DZDKxaJH0eoSobRJ4moBcqx3X3tVExieTqvrUdXWCrlVsBJ2aR/P1bxlYfTyTx5ekpOYMHTqMxYtl4VAhapsEniZg38EDmE7spvM5IzEYG+dbPrRjEjmFNv6zJfBHJowdO57s7FP8/PNPIayZEKK8xvkpJMrQa77HZTDSf9iouq5KyLRPjKJXShwfrjtEsT2w5fjOPXcorVq1Zu7cr0JcOyGENwk8jZzNZiMrfQXGlB40b5Fc19UJqRvOacex08Us2BbYI5dMJhPjxk1kw4Z1HDp0IMS1E0KUkMDTyK1b/TPOwjwSezTcddkCNaB9Aj1ax/LvtYewB/hQu7Fjx2MymZg795sQ104IUUICTyP33YK5uKLiaXdW/7quSsgZDAZuObc9R3OsLNlxLKB9mjdvwfnnj2DRovkUFVlDXEMhBEjgadQyMo7y28a12FMH0TLO95M5G5vhnZvTpUUM7/1yEEeAvZ4JE64kLy9XVjIQopZI4GnE5s79GjDgSDuXls0i6ro6tcJoMHDr4FT2nyrkuwB7Pf36DSA1tQPffvt1iGsnhAAJPI1WUVERCxbMpXX3gRCdQFJMWF1XqdaM7NaCbskxzF59ALvD/ww3g8HAhAmT2Lo1nV27dtZCDYVo2iTwNFLLlv2XnJwcortfQPPocMyN9P4dX4wGA7ef14HDFivztwY2w+3SS8cQERHBf/4jU6uFCLWQPIFUKWUEXgf6AkXAbVrr3V7bpwDTADswXWs9XynVApgDRAFHgcla64Ig5E0F3vWcqwGYqrXWoTjv+sLlcvH115+TltaR41HtSY4Or+sq1bphnZLo1SaW/1tzkDE9WhFurjzwxsbGcdFFl7B06WLuuONuYmKa1VJNhWh6QvU1eCIQqbUeAjwCPF+yQSnVGrgHOA8YDcxUSkUATwBztNbDgU3AtCDl/ScwS2s9ApgBzAzROdcb27dvResdXD5+Ell5xSQ3kes73gyeXk9WXhHfbA5sDbcJE66ksLCQJUsWh7h2QjRtoQo8w4DFAFrrNcBAr22DgJVa6yKtdQ6wG+jjvQ+wCLg4SHkfABZ48pqBRj9n9ptvviA6OoZ2fd337rSOa3qBB9yPTBjQPp53fznofvqqH9279+Css7rz9ddf4HQGtvqBEKLqQjLUBsQBOV6vHUops9ba7mNbHhBfLt1XWrXyaq1PACilFPAc7t5YpUwmAwkJ0f7PsopMJmNIyvV28uRJli1bylVXXc3RYhMAnVrGEh1R9q02m4xER4VXKy1UeUvSjEZDmW2B7h8ZEUZCfNlp4w9f1p1r3l7DF1syufeirmfUrbw//OEPPPbYo2zb9ivDhg3zm7+u1MbfUkMnbeRfXbVRqAJPLhDr9droCTq+tsUCFq/0Qh9pNcmLUupC3Nec/hDI9R2Hw4XFUhDIeVZJQkJ0SMr19uGHH2Oz2RgzZiJvbD5J67gIDE4nBYXFZfLZHdVPC1XekrToqPAy2wLd31pkw2Ip21PpGBvOxd2Smf3zPi7r1oKWsZX3/gYPvoDmzVvw3nvv0atX/b3ptjb+lho6aSP/gtlGycmx/jN5hGqobSUwBkApNRjY4rVtLTBcKRWplIoHugPp3vsAlwErgpHXE3ReBi7VWq8P0fnWC0VFRXz99RcMGXIeaWkd2JaZh2oV+B9DY3XX+R1wuly8sXK/37xhYWFMmnQ169b9wr59e0JfOSGaoFAFnm8Aq1JqFfAicJ9S6n6l1HitdSbwCu5gsQx4TGttBaYD1ymlVgJDcE8ICEbel4Bw4H2l1I9KqbdCdM51bsmSRVgs2Vx77Y2cKigmI7cI1VJmZ7WIi2JCnzYs2JrF+iM5ZBc7KKpkUYPx468gIiKCL774tPYqKUQTEpKhNq21E7i9XPIOr+2zgdnl9skCLvVRVk3z9q1i9Rskp9PJZ5/NoWtXRb9+A1i57xQA3Vo142ReUR3Xrm4V2By0j48kMszI00t2cn3/tozs3oqIcJPP/PHxCYwePYbFixcwdeodJCQk1nKNhWjcms5dhY3cmjUrOXhwP9dddyMGg4GtGXkYDdA1uen0eAwGA9nFjjN+HC6IDDMxrFNzDpwqZNfxfL9lXX319RQXF3uWHRJCBJMEnkbis8/mkJzckgsvvBiAbVl5dGweTVQF3+obo0K7kx92HDvjx+ZZLLRfu3haxISzVB+nyF759Oq0tA4MHnweX331OVZro5+BL0StksDTCGi9nU2bNnDVVddhNptxuVxszcijZ2uZWODNZDQw6qxkcqx2vth41G/+m266GYslm/nz59ZC7YRoOiTwNAIffPAezZo1Y9w49y1KR3Ot5Fjt9JDAc4YOSdGc1bIZn204TEZu5T2ZPn3Opk+fs/nkkw+x2Wy1VEMhGj8JPA3cnj27WbHiR6666jqaNXNfz9makQcgPZ4KjOzWAoBXlu/1m/ePf5zM8ePH+O67haGulhBNhgSeBu6DD94lOjqGq666tjRtW+Zpwk0GurSIqcOa1V/xUWFcO6AtS3ee4JcD2ZXmPeecwSh1Fh9//AF2u73SvEKIwEjgacD279/Hjz9+z6RJVxMXF1+avi0zF9WyGWaTvL0VuXZAe1LiI5m5dBdZBbbSGXDl7+8xGAzcdNNkjhw5xPLly+qmskI0MvLJ1IB9+OF7REZGcs01N5Sm2Z0utmedlus7fjiA4Z2SOGKx8q/vdOkMuALbmbPdhg+/gLS0jnzwwbs4HP4XGxVCVE4CTwN16NBBvv9+CRMnXklCQkJp+p7j+VjtTnq2kcDjT6cWMXRv1YxV+7M5VXDmGnMljEYjf/rTbezbt5fvv19SizUUonGSwNNAvfvu24SHh3PttTeWSV970H3NYmD7BF+7iXIu6paMyWBgyY7juFwVr6Nz4YUX0bVrN9555y2Z4SZEDUngaYB27NjG998v4ZprbiApqXmZbesOWuiYFN0kH/5WHbGRZs7v0px9JwvY4pkN6IvRaGTKlDvIyDgq9/UIUUMSeBoYl8vFm2/OIj4+geuvv6nMNpvDyabDOZyTKr2dqhjQPp72CZH8d8dxsiq5t+fcc4fQt28/3n//HQoLC2uxhkI0LhJ4Gpi1a9ewceN6br75VmJiyq7DtiUjF6vdyaA0CTxVYTQYuLxXa8DFs0t34axgyM1gMDB16p2cOnWSr776vHYrKUQjIoGnAXE4HLz55qukpLRlwoRJZ2xfe8CC0QD920ngqaqEqDBGqWQ2H8llzoYjFebr3bsPQ4cO4+M577Mv6/gZC5JW9rgFIYSbBJ4GZMmSRezZs5spU/5MWFjYGdvXHbTQo3UssZGherBs49Y7JY6hnZJ4/ed9bM2s+HrPn/98D9bCQp554cUzFiT1NR1bCFGWBJ4GIi8vlzffnEWPHr1KV6D2drrIztaMXLm+UwMGg4G/jOxCckw4f/k6nQOnfD8SOC2tA+MmXcvW1UvJ3L+zlmspRMMngaeBmD37TXJyLNx//8MYjWe+bZsO5+BwwaBUeWhZTSREhfHqVX0wAHd/tYXjp30/RO/am24hOi6RH754G5fTWbuVFKKBC8mYjFLKCLwO9AWKgNu01ru9tk8BpgF2YLrWer5SqgUwB4gCjgKTtdYFNc3rdcy/AK211o+E4pxDaceObcyd+xWTJl1Dt27KZ561By1EmI30Tomr5do1PqmJUbx8ZS9u/2wzd3+1hTev7ktCdNmhzeiYGIZP/BPfffAi235ZRs8hZ/ZChZsja8oAABQ6SURBVBC+harHMxGI1FoPAR4Bni/ZoJRqDdwDnAeMBmYqpSKAJ4A5WuvhwCZgWjDyKqWilFIfAXeG6FxDyuFw8MIL/yIxMYlbb51WYb51B7M5u20cEWbpxAZD91axPDuhBwezC7nxww1sOpxzRp6zzrmAlE7d+Xnu+xTknbld/H97dx4eZXUvcPz7zj6TTBYyWQyERQkHomVX2SyCoEh9QIu3Vy22yGOr19q6oA9IBdx769oqVVCxoFV7EUVwAWwLigQRkaKA5AjIZkFCCCEJWWe5f7wDTJIBAmQmCfw+zwPJnPe828nM/OY9c97fESK6WL1LDQIWA2itVwF9I5ZdBORrrau11geBLUD3yHWARcCwJqrrAl4FHo3RucbUu+++TUHBJm6//c4j0x7UV3Sohq1FFVwo3WxN6qIOqbxyfU+cNgu3zv2Klz/bQSB4dNiaYRgMve5/qKmqYNncmc14pEK0LrEa/pQERH4EDCilbFprf5RlZUByvfJoZadUV2t9APhIKTWusQdvtRqkpHgaW73RrFbLSW13+/btzJz5FwYMGMCYMVdjGEbUeh/oIgCu6J7dYPuVB6vwuB0N1rFZLQ3KG1sWq7qHyywWo86yeB6ry2knJdl15HG/FA8LO6YxdeFGZq7cwfLvipl8ZVc6pCXgcTtof14ug0b9nE/emcP2Datw9RhTZ/1YOdnn0tlI2ujEmquNYhV4SoHILJWWcNCJtswLlESUV0YpO526Jy0QCFFSEn1E0+lISfE0ert+v5+JEydit9uZMGEyBw8e+075d9Z+z3k+D5lOS4PtV9UEqKhsmADTHwg2KG9sWazqHi7zuB11lsXzWKuqaykpaThYYMqwzvRvn8Kzn3zHjX/9gv6d2tAjO4lUj50eg0dTsCafxa9N55rLBuEOpTdYv6mdzHPpbCVtdGJN2Ubp6Y1PTByrrrZ8YCSAUqofsD5i2WrgEqWUSymVDHQDNkSuA1wJfNpEdVulv/1tNps2bWTChImkp2ccs973JZV8vbuUEV0zjnlFJE6fYRgMV+m8dVNfbhvUkXXfl/DyZztYtb0YDAuX33gHtdWVvPDnx4+bbFQIEbvAMx+oUkqtBJ4B7lJK3a2UGqW1/gF4FjNYLAV+r7WuAh4BrlNK5QP9gelNVLfV2bTpG+bMmcXll1/J0KHDj1t3SUEhACO6HTs4iabjslu56eL2vDy2N53SPCzbvJ/Zq3fhT8yk/1U/Z9WKT5g/f15zH6YQLVpMutq01kHg1nrFBRHLXwJeqrfOXmBElG2dVt2IZbMbd/TNq6SkhGnT7iMtzccdd9xz3LqhUIjFmwrp1S6ZrKTYf69wNjAMgwM1dbMPeOxWnPUuJtMTnVzbMxu9t5wlBYW8tnoXIy+4jL57NjN9+jN07dqNvLwL4njkQrQeklulBfH7/TzwwGSKi/czffqLeL3H7zMtKCxne3El1/dpF6cjPPNV+oN8tnlfnbKh3TKpqNd9Fgg/VJmJtEtx8c7Xe1iwvpBrLxuPb8c2pkyZxKxZr5GSIiMNhahPbvpoQWbMeI61a9dwzz330bVr3gnrL95UiN1qMKyLLw5Hd/aq9Acb5GSrjRhWneC0cX2ftvTITmLexhJ8w26hpOQADz00Fb/ff5wtC3F2ksDTQixa9D5z577Jtddex4gRPzlh/UAwxJKCfQzs1IYkV8OEoSK+bBYLV+ZlcOslnfiiLJG0QdezZs3nPP30H2WwgRD1SFdbC5Cf/ymPP/4ovXv35bbbfte4dbYVs/9QjQwqaEEMw+CnPbPJSXIybZFBm54jeP/9BaSl+Y6bdUKIs40Enmb25ZdfMG3afeTmKh577AlsthP/SYKhEC+u3EHbZBeDz0s7YX0RX5d3zSDZZefeBWAvK2HOnFmkpaVx9dXXNvehCdEiSOBpRhs3rmfy5Hto2zaHJ574Ex5PQqPWW/ptEbqwnAevVNisR3tLq0M0mA8mIL08cXV4VFyX7CSeurY705xWag6V8vQzT2CxWBk16prmPkQhmp0EnmayevUqpkyZRGpqG5566jmSkxs3j04gGGLmyu10SvNwRde63WwVtQGWhe/rOax/buzvohdH1R8Vd0PfHJYm3oZeMJ0nn/wDRQcOMv6X45rvAIVoAWRwQTNYsuRDJk68i7Zt2zJ9+ov4fI0flbZo0162F1dy84COlPqDdaZdlqublsfjsPHHMb0Yc8v9BNr2ZPas57n9gT9QWRN9tFt1CJlOW5zx5IonjoLBIK+++govvzyD3r378sgjjx8z43Q0tYEgL63cQbfMRPp2SJGrm1bCZrVw97AujOr+JBMffJivl87nim+30veaW+mfm03Ptklkep14nTYqaoMN/q5DumbgdFib6eiFaHoSeOLkwIFiJk16mJUr8xk+fAQTJ96Pw9EwO/LxzFq1k92l1Uwclit52VqhzhlJzJv+OE+/OIuFb7zM2jkPsqLvLwh5MwFw2iykJTiwGgZel5Vkl52sJCfnt00mpY1b/ubijCGBJw7Wrl3Dww9PpayslAkTJjFq1DUn/SayfOt+Zq3ayVXnZ9K/YyoltTLdcmtkGAYTbrmZoRf1YtoDk7GvfI4BV4+jba+hFFf42Xeohm37ytl9sJqCveUEQzD/6x9IT3Tw4/PSGJLro09O474PFKKlksATQwcOFPP888+yZMmH5OS0Z8aMGWRmtj/p7ewormDqhwV0y0xkklztnBF69erD0y/M5oFpU1n29xlkr/6EYTf8hl8O731kcII/GKSwrIZEl51Ne0r5YONe3v5qD8kuG1d1z2ZY5zacn+WV54NodSTwxEBNTQ3vvTefWbNepKqqkhtvHMeNN44nK6vNSc99UVET4N6F32C3Wnh8VJ5MbX0GSfNlcM3tD7Lp82V88s4sXv/fOynaOIZ2F43E403BZrGQnexiaLdMRvc4h6raAGt2lrB8cxFvrf2e11fvpH2qm+Eqncu6+OjsS5AgJFoFCTxNqLq6ivfeW8Cbb77Gvn2F9OlzIXfeeS8dOnQ8pe0VllVzz4KN7Ciu4LkxP5IM1K1UtIzXYN5jZRgGef2G0iGvN/kLX2XRgrewfbCAnpdeRa8ho/B4kxsM0e7fMZWBnX1U1vhZvrmIv36+k1mrdpKT4mJApzZc2D6F3u1S8Lrk5S1aJnlmNqG77/4t69d/RffuPZk8eSq9e194yp9AN+wp5Z4F31BRE+CBn3Qj95ykOm9eMnS69YiW8RrqjkJMSErh8rG/41c338wLz/+FLz6ax9ql75LbaxBpP7+BkLXuRH8uu5VLc32MyMukpLKW/K37yd+6n3fX/8D//Xs3FgPOTUsgLyuRvCwvXTMSOc+XgMsuo+NE85PA04TGjh2H2+2mZ8/ep7yNGn+Quet288KKbfgSnfxh9Pls21cuQ6fPEtk5HRg5/l76jbyOr5YvYtPqpUy582NSM7Lp3HMAub0Gkt6uE1A3oHlsFoardB68Ko9NP5Sy7vuDFPxQxsdb9rNww14ALAZkJ7s51+ehY5oHleGli89DuxQ3Not00Yn4kcDThPr3H3jK6wbDk7rNyN/OntJqBnZqwwMjFCGbhW37ypvwKEVr0CYrhyE/+zUDR43Fv2sdixcvZs0/3+GLj+aRkJRKx7yeFA/oT4Unm5SMbCwW80omAOwvqyYn2UVOsothXXycm5XE4vV7KCyrprCsmq//U8ryLfuP7MtmMchJcdOhjZusZDfpXgfnJLvI9DrJ8Dpx2qxRJ8MT4lTFJPAopSzA80APoBq4WWu9JWL5r4BbAD/wiNb6faWUD3gDcAO7gZu01hWxqhuL8z5ZoVCIb/aW81FBIf/U+ygsr0FlJPL7y7twcQdzArFo3w2Is4fD5WHwyNF4cgdQUXaQ79avZqf+iu3frGPjqmUA2J0u0tudS9o57Snq1pmDRhIp6eeQ7MvCZneQleRCZSSiMo7erFwTCNLRl0BRaRXbiyvZvr+CHQcqyd9WTG29ftwEh5V2KW6yk11khYNRRqKDjEQnvkQHvgRHk3ThBUMhymqDHIp4zlstBnarQYLDdlYHvmh5GCH67LitQayueK4GXFrr/kqpfsBTwGgApVQW8DugL+ACViil/gFMBd7QWs9WSk0CblFKvRmLusAzMTrvI0KhENX+IFX+IFW1AQ5W+qkqPMSOvWXsOFBBwd5ydGE5B6v82CwG/TqmcveQTIbk+rDIyCQRhcebzAUDhnPBgOG4XXZ8wQMsWb6awl1b2LtrK5vX5rN+xeI66zg9icxNS8Pi8uLxpuBOTMLh8uBwufF3yCA9yUsPTwL92rmxdbRREfKyclsJh/wGFbUhyv1wqDaILQRb95SzanMNlf4QYIBhHPnpdthIdttIdjlIcttx2Sw4bRYc4VGYwRAEgyGq/EEqawNU1QY4VBOgosb8We0PUHOcLy7tFgOn3YLbbsVtt+IMb99ps2C3WrAaBlaLgcWAUAhCgM1mobomQOBwAebhWgxwWM31HDYLCXYrHoeVBIeVBKcNr9NGojNcZrfhcdTdn81i7utUv78NhUIEgiFqg+Z7RE34faKixs+hcHuUV/vD/wJU1AYoqfKzregQgVCIUChEKAQWi0FOqhuvw4bbbiXRaSXBYR57YvgcEuw2XOF2O9xWDuvpHX9TiFXgGQQsBtBar1JK9Y1YdhGQr7WuBqqVUluA7uF1HgvXWRT+fWuM6sYk8Nw1fwOrth8gEAxxvO/+7VaDzr4ELs310SM7icGd02QyN3FSDMOgXYdO5PVLJK/f0CPlP8p08o/VGyjZt4eDRT9QUXoAV6iSXbv3UrhrK1WHyqmpqiAYDJB/ivt2H6P8YPhf+ACpH5wwfzvyX+Tbnt2Aw3k86s+bFzq8uRBUYP47XA4RQeXIfhsndHQjR7fVKPF4wzbq/HqsPX4X/hl5Lqe6G4CMLr15e8afT2FDJydWgSeJiOcgEFBK2bTW/ijLyoDkeuXRypqy7nHZ7dai9HTvjhPVq+9vv+5/squcUDrQpW30O9W7t0895bJ4rh/PfbWmY43VvgZc0CFqXSFirNFPvFgFnlLAG/HYEg460ZZ5gZKI8sooZU1d90RkyJgQQsRIrG6DzwdGAoS/41kfsWw1cIlSyqWUSga6ARsi1wGuBD6NYV0hhBDNxAjV71BtAhGj2rpj9iLehPnmv0VrvTA8+uzXmIHvMa3120qpTGAO5lVJEXCD1vpQrOo2+UkLIYRolJgEHiGEEOJYJOOkEEKIuJLAI4QQIq4k8AghhIgrydUWBydKIXQmUUrZgVeAjoATeAT4BpiNeYvbBuA3WuugUmoa8BPMFEd3aq1XK6U6n27dOJ3qaVNKZQBfAsMxz2s20kZ1KKXuA0Zh3l/6PPAJ0k5HhF9vczBfbwHgV7SC55Jc8cTHkRRCwCTMFEJnqrHAfq31JZjD16cDTwP3h8sMYLRSqjcwGLgYuA74S3j906obh/NrEuE3jJmY95eBtFEDSqlLgQHAQMxzy0Haqb6RgE1rPQB4CHiUVtBGEnjio04KIcx8cmeqt4ApEY/9QB/MT6pgpi0ahtkmH2mtQ1rrnYBNKZXeBHVbiyeBGZiJa0HaKJorMO8BnA+8B7yPtFN932KegwUzS0straCNJPDER9QUQs11MLGktS7XWpcppbzAPOB+wNBaHx63f6IUR6dbt8VTSo0D9mmtl0QUSxs15MP8kPZfwK3A65hZUKSdjirH7GYrAF4CnqUVPJck8MTH8VIInXGUUjnAMuA1rfUbQGQ/8IlSHJ1u3dZgPDBcKfUx0BN4FciIWC5tZNoPLNFa12itNVBF3Tc7aSe4C7ONumB+hzyHo/lWoYW2kQSe+DheCqEzSjhTxEfARK31K+Hif4f76+Fo2qJ84AqllEUp1R4zGBc1Qd0WT2v9Y631YK31pcA64BfAImmjBlYAI5RShlIqG0gA/iXtVMcBjl6dFAN2WsHr7Yzs7mmB5mN+wl3J0RRCZ6rJQCowRSl1+LueO4BnlVIOYBMwT2sdUEp9CnyG+QHoN+G6E4CXTrVu7E8vZk7rvM/ENgpP5PhjzDyMh89pG9JOkZ4BXgmfkwPz9beGFt5GkjJHCCFEXElXmxBCiLiSwCOEECKuJPAIIYSIKwk8Qggh4koCjxBCiLiS4dRCxJBSahJmapEgZnLFyVrrL6PU6wj8XWvd7xjbuRSYi5lwNQS4gde11s/VqzcCaK+1frEJT0OIJiWBR4gYUUrlYWZWHqi1DimlemLeWd7jFDe5VGt9XXjbTkArpV7TWh+5g1xrvfh0j1uIWJPAI0TsFALtgfFKqcVa63VKqYuUUoOBaeE6HszMBTWHVwovfxQzzf1W4JYo2/aGl/vDqXf2Yd64+yaQq7WepJS6HzMzug14QWs9Uyn1W+AGzKumv2utn23qkxbiROQ7HiFiJJxmZBRmWv/PlFIFwFXA+cBYrfVQYCFmEkwAlFIGZrLHn2qtBwP/AcaFFw9VSn2slFqKmTDzt1rr8vCyN7TWwzCDEUqpXphpTS7GnFogTyl1PvDfmNmHBwFXK6VUrM5fiGORKx4hYiQ8cVap1np8+HFf4EPgXswUQuVAW8zcWIelA+cAc8MxwY2Z+24zEV1tUej6uwdWa60DQAVwh1LqZ0AH4F/hOqlA5yjrChFTcsUjROx0B15QSrnCj7/FTOj4J+AmrfU4zPl4jIh1ioDvgdHhJKKPYmb6PpH6M0EWAL3DiR7tSql/YAaYjcCQ8LZncwYnrBUtlwQeIWJEa/0O8DHwuVIqH1iCebXz14gyL5AdsU4QM6nqB+GksrdhTjN8svtehzn5YD5mlufXtdZfYV7trFBKrQFyMbvyhIgrSRIqhBAiruSKRwghRFxJ4BFCCBFXEniEEELElQQeIYQQcSWBRwghRFxJ4BFCCBFXEniEEELE1f8DtFO0lOIuZhUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(train['SalePrice'] , fit=norm);\n",
    "\n",
    "# Get the fitted parameters used by the function\n",
    "(mu, sigma) = norm.fit(train['SalePrice'])\n",
    "print( '\\n mu = {:.2f} and sigma = {:.2f}\\n'.format(mu, sigma))\n",
    "\n",
    "#Now plot the distribution\n",
    "plt.legend(['Normal dist. ($\\mu=$ {:.2f} and $\\sigma=$ {:.2f} )'.format(mu, sigma)],\n",
    "            loc='best')\n",
    "plt.ylabel('Frequency')\n",
    "plt.title('SalePrice distribution')\n",
    "\n",
    "#Get also the QQ-plot\n",
    "fig = plt.figure()\n",
    "res = stats.probplot(train['SalePrice'], plot=plt)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "313a535c-86c4-4db5-96de-6f65bc4adc2f",
    "_execution_state": "idle",
    "_uuid": "1da2d9831ae6c94b3f6304185f02896a9ee40aa5"
   },
   "source": [
    "The target variable is right skewed.  As (linear) models love normally distributed data , we need to transform this variable and make it more normally distributed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "8df72eef-77de-4a71-aa6a-4b91784a7232",
    "_execution_state": "idle",
    "_uuid": "421775277fdab4e5a05f74aa4ea92e712a743928"
   },
   "source": [
    " **Log-transformation of the target variable**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "_cell_guid": "21b3a0ad-bd68-49aa-a3d7-40a30b3c59dc",
    "_execution_state": "idle",
    "_uuid": "719cf6a9dca56cc529e97af21816d291fa8bd8c0"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " mu = 12.02 and sigma = 0.40\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\anaconda3\\envs\\nlp\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n",
      "  return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#We use the numpy fuction log1p which  applies log(1+x) to all elements of the column\n",
    "train[\"SalePrice\"] = np.log1p(train[\"SalePrice\"])\n",
    "\n",
    "#Check the new distribution \n",
    "sns.distplot(train['SalePrice'] , fit=norm);\n",
    "\n",
    "# Get the fitted parameters used by the function\n",
    "(mu, sigma) = norm.fit(train['SalePrice'])\n",
    "print( '\\n mu = {:.2f} and sigma = {:.2f}\\n'.format(mu, sigma))\n",
    "\n",
    "#Now plot the distribution\n",
    "plt.legend(['Normal dist. ($\\mu=$ {:.2f} and $\\sigma=$ {:.2f} )'.format(mu, sigma)],\n",
    "            loc='best')\n",
    "plt.ylabel('Frequency')\n",
    "plt.title('SalePrice distribution')\n",
    "\n",
    "#Get also the QQ-plot\n",
    "fig = plt.figure()\n",
    "res = stats.probplot(train['SalePrice'], plot=plt)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "51620309-727a-4445-a96a-d9851880d31f",
    "_execution_state": "idle",
    "_uuid": "991e699566f4292490fda326703baa33ce09173f"
   },
   "source": [
    "The skew seems now corrected and the data appears more normally distributed. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "802df76d-0e0b-4868-ba16-91335568d2d7",
    "_execution_state": "idle",
    "_uuid": "827a86d65c6d176f4af55224b91b44a47966652d"
   },
   "source": [
    "##Features engineering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "a5ad11e4-0388-417c-bf77-cc7752f4c5a0",
    "_execution_state": "idle",
    "_uuid": "5fc214fb6df16c026dec0dfcb99af1c1b7744b56"
   },
   "source": [
    "let's first  concatenate the train and test data in the same dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "_cell_guid": "1bd3e9b9-2f42-4251-aadd-5ced84eb1a27",
    "_execution_state": "idle",
    "_uuid": "efc576211e4eed962f04cd94d901c667e6912528"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "all_data size is : (2917, 79)\n"
     ]
    }
   ],
   "source": [
    "ntrain = train.shape[0]\n",
    "ntest = test.shape[0]\n",
    "y_train = train.SalePrice.values\n",
    "all_data = pd.concat((train, test)).reset_index(drop=True)\n",
    "all_data.drop(['SalePrice'], axis=1, inplace=True)\n",
    "print(\"all_data size is : {}\".format(all_data.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9ce95008-a3b9-43fa-bc4e-649ca0f43768",
    "_execution_state": "idle",
    "_uuid": "abe25f3032a0bed179d58d5911cb42d97b35841b"
   },
   "source": [
    "###Missing Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "_cell_guid": "501b465f-8c80-4b93-81d0-a5d41e08d235",
    "_execution_state": "idle",
    "_uuid": "f97d25548ec8f6c02e2d1ee5a6df6c3d107fdf53"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Missing Ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>PoolQC</th>\n",
       "      <td>99.691</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MiscFeature</th>\n",
       "      <td>96.400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Alley</th>\n",
       "      <td>93.212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fence</th>\n",
       "      <td>80.425</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FireplaceQu</th>\n",
       "      <td>48.680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotFrontage</th>\n",
       "      <td>16.661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageQual</th>\n",
       "      <td>5.451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageCond</th>\n",
       "      <td>5.451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageFinish</th>\n",
       "      <td>5.451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageYrBlt</th>\n",
       "      <td>5.451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>GarageType</th>\n",
       "      <td>5.382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtExposure</th>\n",
       "      <td>2.811</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtCond</th>\n",
       "      <td>2.811</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtQual</th>\n",
       "      <td>2.777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinType2</th>\n",
       "      <td>2.743</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinType1</th>\n",
       "      <td>2.708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MasVnrType</th>\n",
       "      <td>0.823</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MasVnrArea</th>\n",
       "      <td>0.788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MSZoning</th>\n",
       "      <td>0.137</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFullBath</th>\n",
       "      <td>0.069</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Missing Ratio\n",
       "PoolQC               99.691\n",
       "MiscFeature          96.400\n",
       "Alley                93.212\n",
       "Fence                80.425\n",
       "FireplaceQu          48.680\n",
       "LotFrontage          16.661\n",
       "GarageQual            5.451\n",
       "GarageCond            5.451\n",
       "GarageFinish          5.451\n",
       "GarageYrBlt           5.451\n",
       "GarageType            5.382\n",
       "BsmtExposure          2.811\n",
       "BsmtCond              2.811\n",
       "BsmtQual              2.777\n",
       "BsmtFinType2          2.743\n",
       "BsmtFinType1          2.708\n",
       "MasVnrType            0.823\n",
       "MasVnrArea            0.788\n",
       "MSZoning              0.137\n",
       "BsmtFullBath          0.069"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_data_na = (all_data.isnull().sum() / len(all_data)) * 100\n",
    "all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)[:30]\n",
    "missing_data = pd.DataFrame({'Missing Ratio' :all_data_na})\n",
    "missing_data.head(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "_cell_guid": "1c80610d-8f19-43c8-bd54-7d786b0dca49",
    "_execution_state": "idle",
    "_uuid": "2eb6e1361884db6a4f65afc3b158fcbe85c2392e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Percent missing data by feature')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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alOSM5IclWR7kkckuSLJ6UlWkpyX5MTuvnKdRgQAADhorGsAJrlPkkO6+05V9UNJnp1kU5KndvfZVfWHSY5PctZ6Djmq6xyxOYdsPnQp+75i22X50kXblrJvAABg59Y7AD+c5JCqukaSw5NcnuT7k5wze/+NSe4dAbguDtl8aD502vFL2fctTnxdEgEIAAD70noH4FcyLf/8UJLrJ7lvkrt298rs/YuTHLE+owEAABxc1jsAfyXJm7v7SVV1oyR/l2TzqvcPS7J1TzvZuHFDjjzyWksa8ev2xTEcDwAAWJb1DsAvZVr2mSQXZrr+7z1VdffuPjvJcUnetqedbN++kq1bL0mSbNly2HImTb52jNX25fGWeaz94XgAAMDVM++/3dc7AF+Q5E+q6u2Zzvw9Ock/J3lJVW1O8sEkZ67jfAAAAAeNdQ3A7v5Kkgfs5K277etZAAAADnYeBA8AADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADAIAQgAADCIQ+b9YFV9U5Lt3b2tqm6R5L5J3tXd71jadAAAACzMXGcAq+oeST6X5Aeq6oZJ/j7Jk5K8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\n",
      "text/plain": [
       "<Figure size 1080x864 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, ax = plt.subplots(figsize=(15, 12))\n",
    "plt.xticks(rotation='90')\n",
    "sns.barplot(x=all_data_na.index, y=all_data_na)\n",
    "plt.xlabel('Features', fontsize=15)\n",
    "plt.ylabel('Percent of missing values', fontsize=15)\n",
    "plt.title('Percent missing data by feature', fontsize=15)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "5d88502a-2484-45d7-a750-0d32075133dd",
    "_execution_state": "idle",
    "_uuid": "dbf28eddefa2c0825781a31cde823ac5ece5a1ee"
   },
   "source": [
    "**Data Correlation**\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "_cell_guid": "3fc115c7-33bb-456d-b3e5-4dd985bfbc9f",
    "_execution_state": "idle",
    "_uuid": "0f6b9912c752212f3f4bdca0b60f5fd01c12d2a0"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1c3290b8>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x648 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Correlation map to see how features are correlated with SalePrice\n",
    "corrmat = train.corr()\n",
    "plt.subplots(figsize=(12,9))\n",
    "sns.heatmap(corrmat, vmax=0.9, square=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "cd681698-02d2-473e-bfc8-2d98a1353a18",
    "_execution_state": "idle",
    "_uuid": "41a6b40f8f03212a624f54167cad456a9f193f93"
   },
   "source": [
    "###Imputing missing values "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e717ffdc-b536-4f6c-8008-e520043a5d3d",
    "_execution_state": "idle",
    "_uuid": "24d64c66f2a2329437743756194d21893ee6dd1f"
   },
   "source": [
    "We impute them  by proceeding sequentially  through features with missing values "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "6f7d94ef-5ffb-4e1b-b1a2-a917cce3f357",
    "_execution_state": "idle",
    "_uuid": "d6d054aff0098e4e602ef618e0a4d3706d71dd66"
   },
   "source": [
    "- **PoolQC** : data description says NA means \"No  Pool\". That make sense, given the huge ratio of missing value (+99%) and majority of houses have no Pool at all in general. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "_cell_guid": "ca8a04eb-f42b-4c26-a690-bb98c95c6118",
    "_execution_state": "idle",
    "_uuid": "1d94b062f7683d711d479e48530009040185fd4c"
   },
   "outputs": [],
   "source": [
    "all_data[\"PoolQC\"] = all_data[\"PoolQC\"].fillna(\"None\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "ea3aecb9-b2e8-4cdc-853d-999f8e2f789c",
    "_execution_state": "idle",
    "_uuid": "0516efe507d7176591f6af3d503312db5038949a"
   },
   "source": [
    "- **MiscFeature** : data description says NA means \"no misc feature\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "_cell_guid": "689863b8-4e4e-45d7-9972-8894e8defbe2",
    "_execution_state": "idle",
    "_uuid": "c311993a26d66d66ce82584a3e00d7ed56a3ea5a"
   },
   "outputs": [],
   "source": [
    "all_data[\"MiscFeature\"] = all_data[\"MiscFeature\"].fillna(\"None\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "d467b9e0-0793-41e5-aaa1-d1686946ba9f",
    "_execution_state": "idle",
    "_uuid": "44cfbd9eecce5e4f2bc91a72ed095270e6010f57"
   },
   "source": [
    "- **Alley** : data description says NA means \"no alley access\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "_cell_guid": "0f822e30-09f3-45f8-b09e-0ffed4ff985c",
    "_execution_state": "idle",
    "_uuid": "35709caf5cb2b0220cd9043f76462a116de15059"
   },
   "outputs": [],
   "source": [
    "all_data[\"Alley\"] = all_data[\"Alley\"].fillna(\"None\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "0bab3349-eddb-4977-acd5-8dad4553ff7f",
    "_execution_state": "idle",
    "_uuid": "3265fc176140dbf1b641e18f2d57b91554c85771"
   },
   "source": [
    "- **Fence** : data description says NA means \"no fence\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "_cell_guid": "c0d6e4f4-df14-467f-bab2-86bfd0493a35",
    "_execution_state": "idle",
    "_uuid": "6d9d6998298a7fea5677f0916bcc9f33dc99e231"
   },
   "outputs": [],
   "source": [
    "all_data[\"Fence\"] = all_data[\"Fence\"].fillna(\"None\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "49747765-81f1-4b23-ad63-534c7fe48b7a",
    "_execution_state": "idle",
    "_uuid": "4869889d4b2b118bc6dcef239cbc27546a7b445e"
   },
   "source": [
    "- **FireplaceQu** : data description says NA means \"no fireplace\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "_cell_guid": "22b88c5b-6419-424f-9805-2c2b11e85dca",
    "_execution_state": "idle",
    "_uuid": "fb8cdb59e4ecba1f7ec78eb3b34c7209c34b1c86"
   },
   "outputs": [],
   "source": [
    "all_data[\"FireplaceQu\"] = all_data[\"FireplaceQu\"].fillna(\"None\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "357994d1-974a-49ee-98e4-a19bc524fcb6",
    "_execution_state": "idle",
    "_uuid": "2b00af603b7dbc9114e62c421b2b886154d31959"
   },
   "source": [
    "- **LotFrontage** : Since the area of each street connected to the house property most likely have a similar area to other houses in its neighborhood , we can **fill in missing values by the median LotFrontage of the neighborhood**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "_cell_guid": "b8cd4872-67c6-4c82-a1a3-807d08efb658",
    "_execution_state": "idle",
    "_uuid": "56c268a7217e85301d2847ceeca410d62e781b89"
   },
   "outputs": [],
   "source": [
    "#Group by neighborhood and fill in missing value by the median LotFrontage of all the neighborhood\n",
    "all_data[\"LotFrontage\"] = all_data.groupby(\"Neighborhood\")[\"LotFrontage\"].transform(\n",
    "    lambda x: x.fillna(x.median()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "c0432c37-f664-4da1-a4d8-87a7cb450bd1",
    "_execution_state": "idle",
    "_uuid": "53712c1d6c7cf2945c6ba8b537171ea6b84f085e"
   },
   "source": [
    "- **GarageType, GarageFinish, GarageQual and GarageCond** : Replacing missing data with None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "_cell_guid": "f264979e-f5e2-4aae-b313-7468570c0294",
    "_execution_state": "idle",
    "_uuid": "d556da5418394ed50d3c14bd02668714cee0fb4a"
   },
   "outputs": [],
   "source": [
    "for col in ('GarageType', 'GarageFinish', 'GarageQual', 'GarageCond'):\n",
    "    all_data[col] = all_data[col].fillna('None')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "92173e82-fd12-4fa0-b7dd-f66fb7b0be3b",
    "_execution_state": "idle",
    "_uuid": "b38ea3ec1c4b8fa4b31e8f86f378798319c05a71"
   },
   "source": [
    "- **GarageYrBlt, GarageArea and GarageCars** : Replacing missing data with 0 (Since No garage = no cars in such garage.)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "_cell_guid": "ada7acfa-8bc3-4d52-9f42-28a78cefc950",
    "_execution_state": "idle",
    "_uuid": "2726cce29df2a2621c54c4c8a06eb570a7191552"
   },
   "outputs": [],
   "source": [
    "for col in ('GarageYrBlt', 'GarageArea', 'GarageCars'):\n",
    "    all_data[col] = all_data[col].fillna(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "b9f955c5-4e03-4835-8df7-1284120453ff",
    "_execution_state": "idle",
    "_uuid": "1729c36d95461d03679eb95e18eaac3d37aeb076"
   },
   "source": [
    "- **BsmtFinSF1, BsmtFinSF2, BsmtUnfSF, TotalBsmtSF, BsmtFullBath and BsmtHalfBath** : missing values are likely zero for having no basement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "_cell_guid": "dd9e7ef7-3cee-437a-9a33-20987e238425",
    "_execution_state": "idle",
    "_uuid": "3008a6bd07ed883ff92a83ebe390940a24010fcb"
   },
   "outputs": [],
   "source": [
    "for col in ('BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF','TotalBsmtSF', 'BsmtFullBath', 'BsmtHalfBath'):\n",
    "    all_data[col] = all_data[col].fillna(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "441b397e-c527-4bd5-8d3c-df6aeba72192",
    "_execution_state": "idle",
    "_uuid": "d4ed0fcea9f8bb309118ba2fb703431e386c6cbd"
   },
   "source": [
    "- **BsmtQual, BsmtCond, BsmtExposure, BsmtFinType1 and BsmtFinType2** : For all these categorical basement-related features, NaN means that there is no  basement.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "_cell_guid": "6d7aa4f6-41b9-4f27-acb0-8af6aca2c8ff",
    "_execution_state": "idle",
    "_uuid": "ee281d3c691a50795e93bb797603c697d320b286"
   },
   "outputs": [],
   "source": [
    "for col in ('BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2'):\n",
    "    all_data[col] = all_data[col].fillna('None')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e7f2515f-8438-4075-9d22-0b37c1a2ef01",
    "_execution_state": "idle",
    "_uuid": "556165bc959cd6ff2354cb774341ac947d052f6a"
   },
   "source": [
    "- **MasVnrArea and MasVnrType** : NA most likely means no masonry veneer for these houses. We can fill 0 for the area and None for the type. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "_cell_guid": "63a3a030-482f-4292-a887-16880f7a2882",
    "_execution_state": "idle",
    "_uuid": "800ff604bb70023baf1d403b53b674b765d9047c"
   },
   "outputs": [],
   "source": [
    "all_data[\"MasVnrType\"] = all_data[\"MasVnrType\"].fillna(\"None\")\n",
    "all_data[\"MasVnrArea\"] = all_data[\"MasVnrArea\"].fillna(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "f2f7f337-de24-44ec-93a6-09428ec9a252",
    "_execution_state": "idle",
    "_uuid": "ded1f7ea0443654bd033eeed1361056f820a925b"
   },
   "source": [
    "- **MSZoning (The general zoning classification)** :  'RL' is by far  the most common value.  So we can fill in missing values with 'RL'\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "_cell_guid": "0e4f28b5-784c-4369-92f4-bda15fa55172",
    "_execution_state": "idle",
    "_uuid": "ca93ce9b34c853c1bb11d837eaff6c2986234757"
   },
   "outputs": [],
   "source": [
    "all_data['MSZoning'] = all_data['MSZoning'].fillna(all_data['MSZoning'].mode()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "99310a4b-9dbf-4273-81b5-94bf0adf338c",
    "_execution_state": "idle",
    "_uuid": "de39073aef3db7d13894fa82285eff803d6e5c1b"
   },
   "source": [
    "- **Utilities** : For this categorical feature all records are \"AllPub\", except for one \"NoSeWa\"  and 2 NA . Since the house with 'NoSewa' is in the training set, **this feature won't help in predictive modelling**. We can then safely  remove it.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "_cell_guid": "facec65d-945f-4be1-86c8-1be011cc2bd0",
    "_execution_state": "idle",
    "_uuid": "de8ee2aca9eb3eeed7442cd9d12843cc64746708"
   },
   "outputs": [],
   "source": [
    "all_data = all_data.drop(['Utilities'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "c6aabfcd-4a1d-4845-88a1-b2f5cb7d8901",
    "_execution_state": "idle",
    "_uuid": "3450d048089ba8ff98807c6ae3b745b0a34165f9"
   },
   "source": [
    "- **Functional** : data description says NA means typical"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "_cell_guid": "c968aa5e-c34f-442e-9388-69e074a2c84e",
    "_execution_state": "idle",
    "_uuid": "e2d331e991fa868320b5d089f61c58b54ce7cb37"
   },
   "outputs": [],
   "source": [
    "all_data[\"Functional\"] = all_data[\"Functional\"].fillna(\"Typ\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "4f2bad4d-8db8-4ac3-8991-ffa2c775a72d",
    "_execution_state": "idle",
    "_uuid": "c122f5b5596bc4ce615c6b620b7e1824a54a47b8"
   },
   "source": [
    "- **Electrical** : It has one NA value. Since this feature has mostly 'SBrkr', we can set that for the missing value.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "_cell_guid": "d93eab84-7759-4201-bd7d-d450399478f7",
    "_execution_state": "idle",
    "_uuid": "d31761ee8878ce4143cf21adde149cd622c5a039"
   },
   "outputs": [],
   "source": [
    "all_data['Electrical'] = all_data['Electrical'].fillna(all_data['Electrical'].mode()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "3d089b8e-3392-4067-a5a1-4f6d4e3e8fb5",
    "_execution_state": "idle",
    "_uuid": "8e0fd54a802f1eddfec0aa4104412c19e1c266d0"
   },
   "source": [
    "- **KitchenQual**: Only one NA value, and same as Electrical, we set 'TA' (which is the most frequent)  for the missing value in KitchenQual.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "_cell_guid": "9f68e47a-5b50-436f-9e31-ff65a1cb1687",
    "_execution_state": "idle",
    "_uuid": "23071ddb69b67b1d742bb15d260421d57aed5583"
   },
   "outputs": [],
   "source": [
    "all_data['KitchenQual'] = all_data['KitchenQual'].fillna(all_data['KitchenQual'].mode()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "e32aec7d-2841-4bfc-a6d2-d181000af4b8",
    "_execution_state": "idle",
    "_uuid": "e8aca612daf293e7228eed9647370036d003e0fb"
   },
   "source": [
    "- **Exterior1st and Exterior2nd** : Again Both Exterior 1 & 2 have only one missing value. We will just substitute in the most common string\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "_cell_guid": "85903feb-7fdb-4911-9a6a-f29629bbf308",
    "_execution_state": "idle",
    "_uuid": "6375e9c7c145e0f2832cbe03addbce3d90cb44c4"
   },
   "outputs": [],
   "source": [
    "all_data['Exterior1st'] = all_data['Exterior1st'].fillna(all_data['Exterior1st'].mode()[0])\n",
    "all_data['Exterior2nd'] = all_data['Exterior2nd'].fillna(all_data['Exterior2nd'].mode()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "b87d629d-6820-4f3e-80f3-efc16436b982",
    "_execution_state": "idle",
    "_uuid": "67f41f0ad648d536d70e2ccb617a4b495fb7f782"
   },
   "source": [
    "- **SaleType** : Fill in again with most frequent which is \"WD\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "_cell_guid": "aaa407ac-ad4a-4313-8530-ac96826be6e5",
    "_execution_state": "idle",
    "_uuid": "06c104efedaf57a4052c8f61c502cb6313e0beea"
   },
   "outputs": [],
   "source": [
    "all_data['SaleType'] = all_data['SaleType'].fillna(all_data['SaleType'].mode()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "8ddca94e-7cfa-4f25-9333-29e013c9c30d",
    "_execution_state": "idle",
    "_uuid": "8a3a35f5dc00732929143480a8a0b34a2a502c27"
   },
   "source": [
    "- **MSSubClass** : Na most likely means No building class. We can replace missing values with None\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "_cell_guid": "23dedd0c-7d5e-4870-8588-8bc4890f627b",
    "_execution_state": "idle",
    "_uuid": "9608a2eada6013e7f14e9341862cca0dca4621e9"
   },
   "outputs": [],
   "source": [
    "\n",
    "all_data['MSSubClass'] = all_data['MSSubClass'].fillna(\"None\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9193270b-8e7b-4a24-b769-d6eb661a1ae7",
    "_execution_state": "idle",
    "_uuid": "465570fcce8944ee31b1709ec6954d03cbf32ff8"
   },
   "source": [
    "Is there any remaining missing value ? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "_cell_guid": "0adf05cf-ce60-4169-805c-ca776e60e85a",
    "_execution_state": "idle",
    "_uuid": "b091fa2ebef19425019e2e550410d0376b9e9fac"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Missing Ratio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [Missing Ratio]\n",
       "Index: []"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Check remaining missing values if any \n",
    "all_data_na = (all_data.isnull().sum() / len(all_data)) * 100\n",
    "all_data_na = all_data_na.drop(all_data_na[all_data_na == 0].index).sort_values(ascending=False)\n",
    "missing_data = pd.DataFrame({'Missing Ratio' :all_data_na})\n",
    "missing_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "78266762-5180-44fa-a630-b808706800d4",
    "_execution_state": "idle",
    "_uuid": "360f518886ac45afe2963b9b53edb17c2be4a130"
   },
   "source": [
    "It remains no missing value.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7996debf-c724-4365-9d63-f6104bae6140",
    "_execution_state": "idle",
    "_uuid": "915505b9c21b4dd84cc466660a68fb0d6b84cfae"
   },
   "source": [
    "###More features engeneering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "0d5076fa-b4ab-4787-bebb-8fd445b8815a",
    "_execution_state": "idle",
    "_uuid": "1cfcb671a97068569efb4e7855da91aa30c5bbde"
   },
   "source": [
    "**Transforming some numerical variables that are really categorical**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "_cell_guid": "a52dc2f9-ca02-4024-987a-165ce630b356",
    "_execution_state": "idle",
    "_uuid": "cc7557817a4442e799e4e4c84dd1efd8bd08867a"
   },
   "outputs": [],
   "source": [
    "#MSSubClass=The building class\n",
    "all_data['MSSubClass'] = all_data['MSSubClass'].apply(str)\n",
    "\n",
    "\n",
    "#Changing OverallCond into a categorical variable\n",
    "all_data['OverallCond'] = all_data['OverallCond'].astype(str)\n",
    "\n",
    "\n",
    "#Year and month sold are transformed into categorical features.\n",
    "all_data['YrSold'] = all_data['YrSold'].astype(str)\n",
    "all_data['MoSold'] = all_data['MoSold'].astype(str)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9f80c0e7-3f3f-45c5-b111-e36f4e31e814",
    "_execution_state": "idle",
    "_uuid": "c4743ffb7fbb050edca7c77dc7cb6520577c1398"
   },
   "source": [
    "**Label Encoding some categorical variables that may contain information in their ordering set** "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "_cell_guid": "81c97efb-4f76-4e87-861a-10a60ab5c84b",
    "_execution_state": "idle",
    "_uuid": "fdb5ddf0a49a3c6df303c569c9f3509c79ac8b61"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape all_data: (2917, 78)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "cols = ('FireplaceQu', 'BsmtQual', 'BsmtCond', 'GarageQual', 'GarageCond', \n",
    "        'ExterQual', 'ExterCond','HeatingQC', 'PoolQC', 'KitchenQual', 'BsmtFinType1', \n",
    "        'BsmtFinType2', 'Functional', 'Fence', 'BsmtExposure', 'GarageFinish', 'LandSlope',\n",
    "        'LotShape', 'PavedDrive', 'Street', 'Alley', 'CentralAir', 'MSSubClass', 'OverallCond', \n",
    "        'YrSold', 'MoSold')\n",
    "# process columns, apply LabelEncoder to categorical features\n",
    "for c in cols:\n",
    "    lbl = LabelEncoder() \n",
    "    lbl.fit(list(all_data[c].values)) \n",
    "    all_data[c] = lbl.transform(list(all_data[c].values))\n",
    "\n",
    "# shape        \n",
    "print('Shape all_data: {}'.format(all_data.shape))\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "a4879ef7-ab0d-4955-bc48-7ebcfa04b3bd",
    "_execution_state": "idle",
    "_uuid": "9976d6288bc183d443fbccc2bde439d5bc3a87b1"
   },
   "source": [
    "**Adding one more important feature**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "b9486529-a3d2-443d-8a90-6bfbc406583b",
    "_execution_state": "idle",
    "_uuid": "ab22a33cf69e8092b3c4ae0a80b1f5f31b67edbc"
   },
   "source": [
    "Since area related features are very important to determine house prices, we add one more feature which is the total area of basement, first and second floor areas of each house"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "_cell_guid": "fc1a8f1a-f003-4538-8e60-d819f46362a3",
    "_execution_state": "idle",
    "_uuid": "208f8d22188786227fff4a978dc3b11b4e1ffd90"
   },
   "outputs": [],
   "source": [
    "# Adding total sqfootage feature \n",
    "all_data['TotalSF'] = all_data['TotalBsmtSF'] + all_data['1stFlrSF'] + all_data['2ndFlrSF']\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "91c73aad-82d1-4301-b540-b2f69dc13902",
    "_execution_state": "idle",
    "_uuid": "aa36d6e3253e354b46d9c9c6f2e8a4089c76be16"
   },
   "source": [
    "**Skewed features**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "_cell_guid": "c5972a73-7e86-4164-a9d6-58432dae1933",
    "_execution_state": "idle",
    "_uuid": "53c471c7008c66590f257e70866f8a3037813f13"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Skew in numerical features: \n",
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Skew</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>MiscVal</th>\n",
       "      <td>21.940</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PoolArea</th>\n",
       "      <td>17.689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LotArea</th>\n",
       "      <td>13.109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LowQualFinSF</th>\n",
       "      <td>12.085</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3SsnPorch</th>\n",
       "      <td>11.372</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LandSlope</th>\n",
       "      <td>4.973</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>KitchenAbvGr</th>\n",
       "      <td>4.301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BsmtFinSF2</th>\n",
       "      <td>4.145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EnclosedPorch</th>\n",
       "      <td>4.002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ScreenPorch</th>\n",
       "      <td>3.945</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                Skew\n",
       "MiscVal       21.940\n",
       "PoolArea      17.689\n",
       "LotArea       13.109\n",
       "LowQualFinSF  12.085\n",
       "3SsnPorch     11.372\n",
       "LandSlope      4.973\n",
       "KitchenAbvGr   4.301\n",
       "BsmtFinSF2     4.145\n",
       "EnclosedPorch  4.002\n",
       "ScreenPorch    3.945"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "numeric_feats = all_data.dtypes[all_data.dtypes != \"object\"].index\n",
    "\n",
    "# Check the skew of all numerical features\n",
    "skewed_feats = all_data[numeric_feats].apply(lambda x: skew(x.dropna())).sort_values(ascending=False)\n",
    "print(\"\\nSkew in numerical features: \\n\")\n",
    "skewness = pd.DataFrame({'Skew' :skewed_feats})\n",
    "skewness.head(10)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9f110087-b707-4073-a1df-0a0a9d6ccbd3",
    "_execution_state": "idle",
    "_uuid": "cf63bdc9f4f80d81f1bfa14f89d65ff104d45e5b"
   },
   "source": [
    "**Box Cox Transformation of (highly) skewed features**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "d1d18243-42d8-4a21-808d-784c21e53973",
    "_execution_state": "idle",
    "_uuid": "eab0b4c0a85ae2fbe1bdeea0eedd113904ef3eb1"
   },
   "source": [
    "We use the scipy  function boxcox1p which computes the Box-Cox transformation of **\\\\(1 + x\\\\)**. \n",
    "\n",
    "Note that setting \\\\( \\lambda = 0 \\\\) is equivalent to log1p used above for the target variable.  \n",
    "\n",
    "See [this page][1] for more details on Box Cox Transformation as well as [the scipy function's page][2]\n",
    "[1]: http://onlinestatbook.com/2/transformations/box-cox.html\n",
    "[2]: https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.special.boxcox1p.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "_cell_guid": "d8ebce87-c55d-46c6-8f06-8b34116d7370",
    "_execution_state": "idle",
    "_uuid": "969fdff338ef46f064d8f855782c96d322a264b1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "There are 59 skewed numerical features to Box Cox transform\n"
     ]
    }
   ],
   "source": [
    "skewness = skewness[abs(skewness) > 0.75]\n",
    "print(\"There are {} skewed numerical features to Box Cox transform\".format(skewness.shape[0]))\n",
    "\n",
    "from scipy.special import boxcox1p\n",
    "skewed_features = skewness.index\n",
    "lam = 0.15\n",
    "for feat in skewed_features:\n",
    "    #all_data[feat] += 1\n",
    "    all_data[feat] = boxcox1p(all_data[feat], lam)\n",
    "    \n",
    "#all_data[skewed_features] = np.log1p(all_data[skewed_features])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "39639caf-31a4-4401-a663-0ba9536b39bf",
    "_execution_state": "idle",
    "_uuid": "5a13a6e2a3e48975de9129d1593bd38df44a1069"
   },
   "source": [
    "**Getting dummy categorical features**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "_cell_guid": "c8e63516-e4e2-4f36-a60e-1c8316392c60",
    "_execution_state": "idle",
    "_uuid": "acd44e283867425257ffd1fb2f4893cdbff43f67"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2917, 220)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "all_data = pd.get_dummies(all_data)\n",
    "print(all_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "243cf047-c2ba-4ae5-a531-22ef9b7cfbfe",
    "_execution_state": "idle",
    "_uuid": "fe9d78c7e37142ee8089826eca3065e0fa5803c1"
   },
   "source": [
    "Getting the new train and test sets. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "_cell_guid": "0a75646f-1974-40ad-a085-ff7bc08454a5",
    "_execution_state": "idle",
    "_uuid": "89e464095544a53177d5a009b914ba4c660072a7"
   },
   "outputs": [],
   "source": [
    "train = all_data[:ntrain]\n",
    "test = all_data[ntrain:]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "461af83d-a928-4645-8512-5e4dbcaf7be0",
    "_execution_state": "idle",
    "_uuid": "10aab4cee97832560e2627a490e01e80c0ffb814"
   },
   "source": [
    "#Modelling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "811925a6-341f-4cae-89c9-00983868a6b2",
    "_execution_state": "idle",
    "_uuid": "be4e4b315682b26359eba1ba3d65022aca9501e1"
   },
   "source": [
    "**Import librairies**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "_cell_guid": "135e8ac5-ce46-4a5f-b205-13f827ef33b8",
    "_execution_state": "idle",
    "_uuid": "fc664fbe27561a3697d0210921107b0e14b7d211"
   },
   "outputs": [],
   "source": [
    "from sklearn.linear_model import ElasticNet, Lasso,  BayesianRidge, LassoLarsIC\n",
    "from sklearn.ensemble import RandomForestRegressor,  GradientBoostingRegressor\n",
    "from sklearn.kernel_ridge import KernelRidge\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.preprocessing import RobustScaler\n",
    "from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin, clone\n",
    "from sklearn.model_selection import KFold, cross_val_score, train_test_split\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import xgboost as xgb\n",
    "import lightgbm as lgb\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7aa6ebb9-27a7-4bd3-a7b2-4ddc6a0abbed",
    "_execution_state": "idle",
    "_uuid": "056b657c8f0de30d4708c600eabbb33684c64479"
   },
   "source": [
    "**Define a cross validation strategy**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "4a2b5181-44f2-4c74-b482-aae0f5afc25a",
    "_execution_state": "idle",
    "_uuid": "dc0d7a3013f349988b3f2c84a6c130d6ad350170"
   },
   "source": [
    "We use the **cross_val_score** function of Sklearn. However this function has not a shuffle attribut, we add then one line of code,  in order to shuffle the dataset  prior to cross-validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "_cell_guid": "f396260b-e182-4a87-9a2a-b92b9375ea6f",
    "_execution_state": "idle",
    "_uuid": "5c12551d092a6c5cf32d86398b054da7af3047b8"
   },
   "outputs": [],
   "source": [
    "#Validation function\n",
    "n_folds = 5\n",
    "\n",
    "def rmsle_cv(model):\n",
    "    kf = KFold(n_folds, shuffle=True, random_state=42).get_n_splits(train.values)\n",
    "    rmse= np.sqrt(-cross_val_score(model, train.values, y_train, scoring=\"neg_mean_squared_error\", cv = kf))\n",
    "    return(rmse)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "42e1565e-77a1-41a7-ac31-893e405d34ad",
    "_execution_state": "busy",
    "_uuid": "643ae2c4a88576ebbd55824ce8e654486087a6e0"
   },
   "source": [
    "## Base models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "578f088d-1a84-41cb-b945-ec64800f2308",
    "_execution_state": "idle",
    "_uuid": "370125198a0cbbc9336cbf179f00a2ebb02cb063"
   },
   "source": [
    "-  **LASSO  Regression**  : \n",
    "\n",
    "This model may be very sensitive to outliers. So we need to made it more robust on them. For that we use the sklearn's  **Robustscaler()**  method on pipeline "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "_cell_guid": "03f45cb7-0a40-45ea-94e8-64fd7ff1e8f6",
    "_execution_state": "idle",
    "_uuid": "2a50c954cb771d350c3092c3658486ba4d22aba5"
   },
   "outputs": [],
   "source": [
    "lasso = make_pipeline(RobustScaler(), Lasso(alpha =0.0005, random_state=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "2c826f7b-ac66-421c-a7ae-29dfdd765bdb",
    "_execution_state": "idle",
    "_uuid": "30e9756cf63991715b48e8c53bc57906fc76f380"
   },
   "source": [
    "- **Elastic Net Regression** :\n",
    "\n",
    "again made robust to outliers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "_cell_guid": "e635cc7e-caeb-4f8b-ae78-c41f8eb0be59",
    "_execution_state": "idle",
    "_uuid": "b614cf1bdee86a3b1cbdde05298f9f7ae023799b"
   },
   "outputs": [],
   "source": [
    "ENet = make_pipeline(RobustScaler(), ElasticNet(alpha=0.0005, l1_ratio=.9, random_state=3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7aae5316-4e32-4203-bff5-3b38c1f657c3",
    "_execution_state": "idle",
    "_uuid": "0775061bb477242f1332a048778e879ca540a216"
   },
   "source": [
    "- **Kernel Ridge Regression** :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "_cell_guid": "805343d9-0af6-43a2-a351-c0b25c62fcf0",
    "_execution_state": "idle",
    "_uuid": "3199c83513d93407c818ce1ed43c6c52e7f5a8c6"
   },
   "outputs": [],
   "source": [
    "KRR = KernelRidge(alpha=0.6, kernel='polynomial', degree=2, coef0=2.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "5a66c27c-be80-4ec0-8953-eaeb2a7dd2e7",
    "_execution_state": "idle",
    "_uuid": "14b60a7e4296cccb39042c9c625a1480d59a01c1"
   },
   "source": [
    "- **Gradient Boosting Regression** :\n",
    "\n",
    "With **huber**  loss that makes it robust to outliers\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "_cell_guid": "af13332c-fd37-40bb-a078-6bad6caaa2ab",
    "_execution_state": "idle",
    "_uuid": "9a983f0f62a0dde7689b20a8e52022bb189478b4"
   },
   "outputs": [],
   "source": [
    "GBoost = GradientBoostingRegressor(n_estimators=3000, learning_rate=0.05,\n",
    "                                   max_depth=4, max_features='sqrt',\n",
    "                                   min_samples_leaf=15, min_samples_split=10, \n",
    "                                   loss='huber', random_state =5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "d44ac87e-bf01-440b-ab22-b2868eb6ae48",
    "_execution_state": "idle",
    "_uuid": "53d7991f7dd03fcd7fb5ab1ec26fcd0614d002d3"
   },
   "source": [
    "- **XGBoost** :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "_cell_guid": "ed738a4c-c246-443c-a3c1-39df25f988b7",
    "_execution_state": "idle",
    "_uuid": "57c24b596ceb46d6f32ebf9501d672d7e469c15b"
   },
   "outputs": [],
   "source": [
    "model_xgb = xgb.XGBRegressor(colsample_bytree=0.4603, gamma=0.0468, \n",
    "                             learning_rate=0.05, max_depth=3, \n",
    "                             min_child_weight=1.7817, n_estimators=2200,\n",
    "                             reg_alpha=0.4640, reg_lambda=0.8571,\n",
    "                             subsample=0.5213, silent=1,\n",
    "                             random_state =7, nthread = -1)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "a43ca74d-093c-4a56-a76c-b3223bf82fbc",
    "_execution_state": "idle",
    "_uuid": "460f3ccf7d5c33ea9f8a826bbf056d759e7b5119"
   },
   "source": [
    "- **LightGBM** :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "_cell_guid": "dd84d7db-3f83-4e4e-b02f-7632ca5ee4ac",
    "_execution_state": "idle",
    "_uuid": "4c94cf90f0ef0d350c5e66f3bd397865bfcc61ae"
   },
   "outputs": [],
   "source": [
    "model_lgb = lgb.LGBMRegressor(objective='regression',num_leaves=5,\n",
    "                              learning_rate=0.05, n_estimators=720,\n",
    "                              max_bin = 55, bagging_fraction = 0.8,\n",
    "                              bagging_freq = 5, feature_fraction = 0.2319,\n",
    "                              feature_fraction_seed=9, bagging_seed=9,\n",
    "                              min_data_in_leaf =6, min_sum_hessian_in_leaf = 11)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9e1eff6a-e937-45e4-96ef-41593e31e1bb",
    "_execution_state": "idle",
    "_uuid": "71bce529300e2f3d9f9f475d01bd7001258dbede"
   },
   "source": [
    "###Base models scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "84ddecce-7671-44e5-919d-97348bf413f4",
    "_execution_state": "idle",
    "_uuid": "cae4987b8ec89e90a90d7826c4ec98d315cac00b"
   },
   "source": [
    "Let's see how these base models perform on the data by evaluating the  cross-validation rmsle error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "_cell_guid": "2d0cc958-1654-425c-90ed-1ceb9edd7186",
    "_execution_state": "idle",
    "_uuid": "7d994349237b9304b0d17719e1af077e69288229"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Lasso score: 0.1115 (0.0074)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "score = rmsle_cv(lasso)\n",
    "print(\"\\nLasso score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "_cell_guid": "7cf6faaf-d69a-4268-b192-a9e60d207c28",
    "_execution_state": "idle",
    "_uuid": "b6d299b9d4a0cdb23ddd8459b3935da2948016d6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ElasticNet score: 0.1116 (0.0074)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "score = rmsle_cv(ENet)\n",
    "print(\"ElasticNet score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "_cell_guid": "a1195106-2170-47f2-86a7-c4f3be683aa8",
    "_execution_state": "idle",
    "_uuid": "437dc093e88d661a369539520af1b4c37d1a0c1a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Kernel Ridge score: 0.1153 (0.0075)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "score = rmsle_cv(KRR)\n",
    "print(\"Kernel Ridge score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "_cell_guid": "43dd152f-7c49-41b6-8f8e-a5864b1e2a71",
    "_execution_state": "idle",
    "_uuid": "e9d8c4bd191f77d8d275f53c0c1a6cf344151294"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Gradient Boosting score: 0.1177 (0.0080)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "score = rmsle_cv(GBoost)\n",
    "print(\"Gradient Boosting score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "_cell_guid": "30738ecc-39f8-44ed-9f42-68518beb7e6a",
    "_execution_state": "idle",
    "_uuid": "5f52ccf39d01165e61a7c6be8b788be4e58e286b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Xgboost score: 0.1165 (0.0054)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "\n",
    "score = rmsle_cv(model_xgb)\n",
    "print(\"Xgboost score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "_cell_guid": "41e0eab9-630d-48d3-905b-e4663aad2262",
    "_execution_state": "idle",
    "_uuid": "5cd5377ee097fbc6fd14b42b4ea654221b097e59"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LGBM score: 0.1154 (0.0071)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "score = rmsle_cv(model_lgb)\n",
    "print(\"LGBM score: {:.4f} ({:.4f})\\n\" .format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "1114bc71-7eb5-4a7c-97a1-42a69cc21130",
    "_execution_state": "idle",
    "_uuid": "06d3adc16585b54a85113882975297c67672ea07"
   },
   "source": [
    "##Stacking  models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "56746043-0d77-4687-a8f2-ae494efae3a8",
    "_execution_state": "idle",
    "_uuid": "2410d2172ddc108475db49214c52c21e66aeee59"
   },
   "source": [
    "###Simplest Stacking approach : Averaging base models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "96d5979d-73ba-4810-bee2-e1a7a8de57f6",
    "_execution_state": "idle",
    "_uuid": "c6e3a67facbc786ddec2f56b40b4da37726d1be5"
   },
   "source": [
    "We begin with this simple approach of averaging base models.  We build a new **class**  to extend scikit-learn with our model and also to laverage encapsulation and code reuse ([inheritance][1]) \n",
    "\n",
    "\n",
    "  [1]: https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "d0145496-896a-44e3-b01b-e12546328f06",
    "_execution_state": "idle",
    "_uuid": "5ecc887f1ab4001c872862cecf3a0b350ac51a23"
   },
   "source": [
    "**Averaged base models class**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "_cell_guid": "49e44ad6-8dc4-4a67-8079-adbac934fec4",
    "_execution_state": "idle",
    "_uuid": "ff3ee5889bcac40847909c3a71285d2b8f9d431f"
   },
   "outputs": [],
   "source": [
    "class AveragingModels(BaseEstimator, RegressorMixin, TransformerMixin):\n",
    "    def __init__(self, models):\n",
    "        self.models = models\n",
    "        \n",
    "    # we define clones of the original models to fit the data in\n",
    "    def fit(self, X, y):\n",
    "        self.models_ = [clone(x) for x in self.models]\n",
    "        \n",
    "        # Train cloned base models\n",
    "        for model in self.models_:\n",
    "            model.fit(X, y)\n",
    "\n",
    "        return self\n",
    "    \n",
    "    #Now we do the predictions for cloned models and average them\n",
    "    def predict(self, X):\n",
    "        predictions = np.column_stack([\n",
    "            model.predict(X) for model in self.models_\n",
    "        ])\n",
    "        return np.mean(predictions, axis=1)   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "825eb99f-d509-4203-b0c6-4ff77f696322",
    "_execution_state": "idle",
    "_uuid": "f05bf966ea7a7b5e6f8ca5d641ebd11281d54d0d"
   },
   "source": [
    "**Averaged base models score**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "18209a57-f46d-4ce7-8331-834f419c57f2",
    "_execution_state": "idle",
    "_uuid": "b66ef29c829b7122a2e8e2d187211039570973ac"
   },
   "source": [
    "We just average four models here **ENet, GBoost,  KRR and lasso**.  Of course we could easily add more models in the mix. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "_cell_guid": "d480916f-89e7-4bcc-9b9d-b54492591654",
    "_execution_state": "idle",
    "_uuid": "81ce9e148b7e735f465b4b6508511dea44fbf791"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " Averaged base models score: 0.1091 (0.0075)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "averaged_models = AveragingModels(models = (ENet, GBoost, KRR, lasso))\n",
    "\n",
    "score = rmsle_cv(averaged_models)\n",
    "print(\" Averaged base models score: {:.4f} ({:.4f})\\n\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "588f9fd2-0c5e-43cd-8a0a-0271f2468ef7",
    "_execution_state": "idle",
    "_uuid": "421c03673969c6a2dd2253f9d4c503ab1276b105"
   },
   "source": [
    "Wow ! It seems even the simplest stacking approach really improve the score . This encourages \n",
    "us to go further and explore a less simple stacking approch. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "387761c7-9dc5-41aa-8cda-5315b6a72fbf",
    "_execution_state": "idle",
    "_uuid": "01b68302f0ec3af42a70794bc339bf5956ab2569"
   },
   "source": [
    "###Less simple Stacking : Adding a Meta-model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "cb18e314-968d-4765-942a-5706d0f4f815",
    "_execution_state": "idle",
    "_uuid": "69f216ce13eb61f0d07403986a2d38b11e18ae6a"
   },
   "source": [
    "In this approach, we add a meta-model on averaged base models and use the out-of-folds predictions of these base models to train our meta-model. \n",
    "\n",
    "The procedure, for the training part, may be described as follows:\n",
    "\n",
    "\n",
    "1. Split the total training set into two disjoint sets (here **train** and .**holdout** )\n",
    "\n",
    "2. Train several base models on the first part (**train**)\n",
    "\n",
    "3. Test these base models on the second part (**holdout**)\n",
    "\n",
    "4. Use the predictions from 3)  (called  out-of-folds predictions) as the inputs, and the correct responses (target variable) as the outputs  to train a higher level learner called **meta-model**.\n",
    "\n",
    "The first three steps are done iteratively . If we take for example a 5-fold stacking , we first split the training data into 5 folds. Then we will do 5 iterations. In each iteration,  we train every base model on 4 folds and predict on the remaining fold (holdout fold). \n",
    "\n",
    "So, we will be sure, after 5 iterations , that the entire data is used to get out-of-folds predictions that we will then use as \n",
    "new feature to train our meta-model in the step 4.\n",
    "\n",
    "For the prediction part , We average the predictions of  all base models on the test data  and used them as **meta-features**  on which, the final prediction is done with the meta-model.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "7a1d4b95-ad19-4522-8459-99f0839a49bb",
    "_uuid": "5e232cc0edea67af1fc672ee07a93c435e7e2f98"
   },
   "source": [
    "![Faron](http://i.imgur.com/QBuDOjs.jpg)\n",
    "\n",
    "(Image taken from [Faron](https://www.kaggle.com/getting-started/18153#post103381))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "9e3f01cb-cd76-4861-81c0-775c613f7d7f",
    "_uuid": "7c4d68ee6e6dffdf0b816bee48fd55b29bd66386"
   },
   "source": [
    "![kaz](http://5047-presscdn.pagely.netdna-cdn.com/wp-content/uploads/2017/06/image5.gif)\n",
    "\n",
    "Gif taken from [KazAnova's interview](http://blog.kaggle.com/2017/06/15/stacking-made-easy-an-introduction-to-stacknet-by-competitions-grandmaster-marios-michailidis-kazanova/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "b9ca03ee-0377-4313-a236-59d3d972cac3",
    "_uuid": "a46c5bab3855a4728c52765379c1674de3123a25"
   },
   "source": [
    "On this gif, the base models are algorithms 0, 1, 2 and the meta-model is algorithm 3. The entire training dataset is \n",
    "A+B (target variable y known) that we can split into train part (A) and holdout part (B). And the test dataset is C. \n",
    "\n",
    "B1 (which is the prediction from the holdout part)  is the new feature used to train the meta-model 3 and C1 (which\n",
    "is the prediction  from the test dataset) is the meta-feature on which the final prediction is done. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "bd10661e-6eec-4789-83fa-d55b77619252",
    "_execution_state": "idle",
    "_uuid": "5374a729325ac38423ff82891f1cc887f14ba317"
   },
   "source": [
    "**Stacking averaged Models Class**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "_cell_guid": "03326750-2442-4e14-8774-6e2ce9330173",
    "_execution_state": "idle",
    "_uuid": "9115cf7180ba9491bd0a2c5bd566e18238c9de80"
   },
   "outputs": [],
   "source": [
    "class StackingAveragedModels(BaseEstimator, RegressorMixin, TransformerMixin):\n",
    "    def __init__(self, base_models, meta_model, n_folds=5):\n",
    "        self.base_models = base_models\n",
    "        self.meta_model = meta_model\n",
    "        self.n_folds = n_folds\n",
    "   \n",
    "    # We again fit the data on clones of the original models\n",
    "    def fit(self, X, y):\n",
    "        self.base_models_ = [list() for x in self.base_models]\n",
    "        self.meta_model_ = clone(self.meta_model)\n",
    "        kfold = KFold(n_splits=self.n_folds, shuffle=True, random_state=156)\n",
    "        \n",
    "        # Train cloned base models then create out-of-fold predictions\n",
    "        # that are needed to train the cloned meta-model\n",
    "        out_of_fold_predictions = np.zeros((X.shape[0], len(self.base_models)))\n",
    "        for i, model in enumerate(self.base_models):\n",
    "            for train_index, holdout_index in kfold.split(X, y):\n",
    "                instance = clone(model)\n",
    "                self.base_models_[i].append(instance)\n",
    "                instance.fit(X[train_index], y[train_index])\n",
    "                y_pred = instance.predict(X[holdout_index])\n",
    "                out_of_fold_predictions[holdout_index, i] = y_pred\n",
    "                \n",
    "        # Now train the cloned  meta-model using the out-of-fold predictions as new feature\n",
    "        self.meta_model_.fit(out_of_fold_predictions, y)\n",
    "        return self\n",
    "   \n",
    "    #Do the predictions of all base models on the test data and use the averaged predictions as \n",
    "    #meta-features for the final prediction which is done by the meta-model\n",
    "    def predict(self, X):\n",
    "        meta_features = np.column_stack([\n",
    "            np.column_stack([model.predict(X) for model in base_models]).mean(axis=1)\n",
    "            for base_models in self.base_models_ ])\n",
    "        return self.meta_model_.predict(meta_features)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "da4c9354-b5c2-4994-8ffd-550416a5c4db",
    "_execution_state": "idle",
    "_uuid": "5fdbcf5c678b260adf80cf39b0f3bb63a26213e1"
   },
   "source": [
    "**Stacking Averaged models Score**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "03abed3d-205c-411d-89de-b566b7f1f708",
    "_execution_state": "idle",
    "_uuid": "10fdbde25e455566637627554269adff7dfec193"
   },
   "source": [
    "To make the two approaches comparable (by using the same number of models) , we just average **Enet KRR and Gboost**, then we add **lasso as meta-model**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "_cell_guid": "4db03a27-e9fb-484d-bbfe-2058f16dce77",
    "_execution_state": "idle",
    "_uuid": "f2c78b5950097660d3f8b84bade8d8dbdc3964f2"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Stacking Averaged models score: 0.1085 (0.0074)\n"
     ]
    }
   ],
   "source": [
    "stacked_averaged_models = StackingAveragedModels(base_models = (ENet, GBoost, KRR),\n",
    "                                                 meta_model = lasso)\n",
    "\n",
    "score = rmsle_cv(stacked_averaged_models)\n",
    "print(\"Stacking Averaged models score: {:.4f} ({:.4f})\".format(score.mean(), score.std()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "61f0f9af-9264-4945-829a-c629ed6a3299",
    "_execution_state": "idle",
    "_uuid": "0ca396a31059f16aff47e0d53d011865634e101e"
   },
   "source": [
    "We get again a better score by adding a meta learner"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "1cc6527c-4705-4895-992f-0c3755b27cee",
    "_execution_state": "idle",
    "_uuid": "75e8303614ea910f93056a8bdc4cd9cfe62ecd46"
   },
   "source": [
    "## Ensembling StackedRegressor, XGBoost and LightGBM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "15f8fed4-bbf8-4eca-b400-8ea194010c78",
    "_execution_state": "idle",
    "_uuid": "5835af97aef41c60ea448988c606cd6a1f451712"
   },
   "source": [
    "We add **XGBoost and LightGBM** to the** StackedRegressor** defined previously. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "5ab5b13e-78c1-49be-9bcb-e54a6bf119d7",
    "_execution_state": "idle",
    "_uuid": "9015eddf85323209a7729420affecb9940bdd7d3"
   },
   "source": [
    "We first define a rmsle evaluation function "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "_cell_guid": "232c3959-c6e1-4535-8ad4-62892edc3f06",
    "_execution_state": "idle",
    "_uuid": "07f9ef433905b61a08a36790254d6a34661f0653"
   },
   "outputs": [],
   "source": [
    "def rmsle(y, y_pred):\n",
    "    return np.sqrt(mean_squared_error(y, y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "999a8cc6-5083-4fca-bc90-616ac2f3ef8b",
    "_execution_state": "idle",
    "_uuid": "b7b74b70e6514b7623bc67cfec2b4f5d37c98707"
   },
   "source": [
    "###Final Training and Prediction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "717b4b02-8bcf-4df3-8994-f6a113110115",
    "_execution_state": "idle",
    "_uuid": "115d9e90a84c33213f0f0de7d86b6098f29ca7d8"
   },
   "source": [
    "**StackedRegressor:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "_cell_guid": "e64b2750-1e32-4e91-affb-e583d6ca8722",
    "_execution_state": "busy",
    "_uuid": "8936479533c4bb147ab09f1d2133d8bacbf9afc1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.07815719379164211\n"
     ]
    }
   ],
   "source": [
    "stacked_averaged_models.fit(train.values, y_train)\n",
    "stacked_train_pred = stacked_averaged_models.predict(train.values)\n",
    "stacked_pred = np.expm1(stacked_averaged_models.predict(test.values))\n",
    "print(rmsle(y_train, stacked_train_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "6c322757-44c0-4c81-a319-1aa6ccdf440f",
    "_execution_state": "idle",
    "_uuid": "06a0eafc07a8dae002f3fc1499849ebf7ec014be"
   },
   "source": [
    "**XGBoost:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "_cell_guid": "2af45055-47aa-4e26-84df-ba5726bdff54",
    "_execution_state": "idle",
    "_uuid": "c80de2558910e4091f087a99bfcb202f01033ad7"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0815823282299117\n"
     ]
    }
   ],
   "source": [
    "model_xgb.fit(train, y_train)\n",
    "xgb_train_pred = model_xgb.predict(train)\n",
    "xgb_pred = np.expm1(model_xgb.predict(test))\n",
    "print(rmsle(y_train, xgb_train_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "22b2b135-2af8-4dbb-a8f0-1fcd7f745a66",
    "_execution_state": "idle",
    "_uuid": "b6d1cdcc2bfc08d0eb58135878008e6d64987089"
   },
   "source": [
    "**LightGBM:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "_cell_guid": "995d4c8e-db72-4370-a1ec-50e0c761f09a",
    "_execution_state": "idle",
    "_uuid": "65398376dca67e2aa78576108a0bb8160031c111"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.07247823724376089\n"
     ]
    }
   ],
   "source": [
    "model_lgb.fit(train, y_train)\n",
    "lgb_train_pred = model_lgb.predict(train)\n",
    "lgb_pred = np.expm1(model_lgb.predict(test.values))\n",
    "print(rmsle(y_train, lgb_train_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "_cell_guid": "619452b2-c395-48fe-81ab-d6b1d355236b",
    "_execution_state": "idle",
    "_uuid": "07500cf506f6a90c6439c2dabf81ab966cf1c792"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSLE score on train data:\n",
      "0.07578146974463427\n"
     ]
    }
   ],
   "source": [
    "'''RMSE on the entire Train data when averaging'''\n",
    "\n",
    "print('RMSLE score on train data:')\n",
    "print(rmsle(y_train,stacked_train_pred*0.70 +\n",
    "               xgb_train_pred*0.15 + lgb_train_pred*0.15 ))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "844b5e21-7bd2-4a2b-9f7a-2e755ed06ecb",
    "_execution_state": "idle",
    "_uuid": "59443e95f66cb9e595cff9a3666824299239126b"
   },
   "source": [
    "**Ensemble prediction:**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "_cell_guid": "3ec2c58f-6bee-46a6-a263-1fe2cf3569cb",
    "_execution_state": "idle",
    "_uuid": "18996472b775bd9114fea7f08c8a554d4dafe774"
   },
   "outputs": [],
   "source": [
    "ensemble = stacked_pred*0.70 + xgb_pred*0.15 + lgb_pred*0.15"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "434ca649-2fa0-46a5-ab29-7f403448ddf7",
    "_execution_state": "idle",
    "_uuid": "c9f02561da543f4901dcd2051acbd6c197108dd5"
   },
   "source": [
    "**Submission**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "_cell_guid": "3db46af9-e18a-43bb-9699-45b851f835e5",
    "_execution_state": "idle",
    "_uuid": "93f6915cf25c7bb6b6fa6e74ad7b853387ac1db5"
   },
   "outputs": [],
   "source": [
    "sub = pd.DataFrame()\n",
    "sub['Id'] = test_ID\n",
    "sub['SalePrice'] = ensemble\n",
    "sub.to_csv('submission.csv',index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "_cell_guid": "a35b0fbc-5235-4463-a86f-526a32b86956",
    "_execution_state": "idle",
    "_uuid": "8a08ae030e55075f00e4f5d9354610c9b88c4c24"
   },
   "source": [
    "**If you found this notebook helpful or you just liked it , some upvotes would be very much appreciated -  That will keep me motivated to update it on a regular basis** :-)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
